首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法使用意图从ListActivity启动新活动

无法使用意图从ListActivity启动新活动
EN

Stack Overflow用户
提问于 2013-10-10 18:32:41
回答 1查看 1.8K关注 0票数 1

我刚开始编写Android应用程序,我一直在编写一本我得到的书。这个应用程序只需要从一个列表活动中运行一群测试活动分子。我测试了列表活动,结果很好。我还试着测试活动列表中的第一个活动,它只是被困住了,试图加载它,然后继续尝试加载它。除了包名之外,我的代码实际上是从书中逐字而来的。我知道它找到了课程,只是活动没有启动,我也不知道为什么。我觉得我只是错过了一些简单的东西,或者忽略了一个小错误。到目前为止,这是我为该应用程序提供的三个文件。我很确定这与AndroidBasicStarter.java的意图有关,但我包含了一切,以防它不是。

编辑:我在加载LifeCycleTest.java时遇到了麻烦。我没有编写更多的测试代码,因为第一个测试不起作用,我不知道为什么。

AndroidBasicStarter.java

代码语言:javascript
运行
复制
package com.dom.starter;

import android.os.Bundle;
import android.content.Intent;
import android.app.ListActivity;
import android.view.View; 
import android.widget.ArrayAdapter;
import android.widget.ListView;


public class AndroidBasicStarter extends ListActivity 
{
    String tests[] = { "LifeCycleTest", "SingleTouchTest", "MultiTouchTest", 
    "KeyTest", "AccelerometerTest", "AssestsTest", "ExternalStorageTest",
    "SoundPoolTest", "MediaPlayerTest", "FullScreenTest", "RenderViewTest",
    "ShapeTest", "BitmapTest", "FontTest", "SurfaceTest"};

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setListAdapter(new ArrayAdapter<String> 
               (this,android.R.layout.simple_list_item_1,tests));

    }

    @Override
    protected void onListItemClick(ListView list, View view,
        int position,long id)
    {
        super.onListItemClick(list, view, position, id);
        String testName = tests[position];

        try
        {
            Class clazz = Class.forName("com.dom.starter." + testName);
            Intent intent = new Intent(AndroidBasicStarter.this,clazz);
            startActivity(intent);//problem here maybe?
        }//end try

        catch(ClassNotFoundException e)
        {
            e.printStackTrace();
        }//end catch
    }

}

LifeCycleTest.java

代码语言:javascript
运行
复制
package com.dom.starter;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

public class LifeCycleTest extends Activity
{
    StringBuilder builder = new StringBuilder();
    TextView textView;

    private void log(String text)
    {
        Log.d("LifeCycleTest", text);
        builder.append(text);
        builder.append('\n');
        textView.setText(builder.toString());
    }


    @Override
    public void onCreate(Bundle saveInstanceState)
    {
        super.onSaveInstanceState(saveInstanceState);
    textView = new TextView(this);
    textView.setText(builder.toString());
    setContentView(textView);
    log("Created");
    }


    @Override
    protected void onResume()
    {
        super.onResume();
        log("Resumed");
    }


    @Override
    protected void onPause()
    {
        super.onPause();
        log("Paused");

        if(isFinishing())
            log("Finishing");
    }   
}

AndroidManifest.xml

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.dom.starter"
    android:versionCode="1"
    android:versionName="1.0">

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">
    <activity
        android:name="AndroidBasicStarter"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity 
        android:name="LifeCycleTest"
        android:label="Life Cycle Test" 
        android:configChanges="keyboard|keyboardHidden|orientation"/>
</application>

Logcat

代码语言:javascript
运行
复制
10-10 12:50:39.807: E/AndroidRuntime(31182): FATAL EXCEPTION: main
10-10 12:50:39.807: E/AndroidRuntime(31182): java.lang.RuntimeException: Unable to   start activity ComponentInfo{com.dom.starter/com.dom.starter.LifeCycleTest}: java.lang.NullPointerException
10-10 12:50:39.807: E/AndroidRuntime(31182):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
10-10 12:50:39.807: E/AndroidRuntime(31182):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
10-10 12:50:39.807: E/AndroidRuntime(31182):    at android.app.ActivityThread.access$700(ActivityThread.java:143)
10-10 12:50:39.807: E/AndroidRuntime(31182):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241)
10-10 12:50:39.807: E/AndroidRuntime(31182):    at android.os.Handler.dispatchMessage(Handler.java:99)
10-10 12:50:39.807: E/AndroidRuntime(31182):    at android.os.Looper.loop(Looper.java:137)
10-10 12:50:39.807: E/AndroidRuntime(31182):    at android.app.ActivityThread.main(ActivityThread.java:4950)
10-10 12:50:39.807: E/AndroidRuntime(31182):    at java.lang.reflect.Method.invokeNative(Native Method)
10-10 12:50:39.807: E/AndroidRuntime(31182):    at java.lang.reflect.Method.invoke(Method.java:511)
10-10 12:50:39.807: E/AndroidRuntime(31182):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)
10-10 12:50:39.807: E/AndroidRuntime(31182):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)
10-10 12:50:39.807: E/AndroidRuntime(31182):    at dalvik.system.NativeStart.main(Native Method)
10-10 12:50:39.807: E/AndroidRuntime(31182): Caused by: java.lang.NullPointerException
10-10 12:50:39.807: E/AndroidRuntime(31182):    at android.app.Activity.onSaveInstanceState(Activity.java:1222)
10-10 12:50:39.807: E/AndroidRuntime(31182):    at com.dom.starter.LifeCycleTest.onCreate(LifeCycleTest.java:26)
10-10 12:50:39.807: E/AndroidRuntime(31182):    at android.app.Activity.performCreate(Activity.java:5179)
10-10 12:50:39.807: E/AndroidRuntime(31182):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
10-10 12:50:39.807: E/AndroidRuntime(31182):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074)
10-10 12:50:39.807: E/AndroidRuntime(31182):    ... 11 more

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-10 19:02:29

在onCreate in LifeCycleTest.java中,它应该是super.onCreate(saveInstanceState);而不是super.onSaveInstanceState(saveInstanceState);

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19303514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档