android - 无法使用 Intent 从 ListActivity 启动新 Activity

标签 android android-intent android-activity listactivity

我刚开始编写 Android 应用程序,我一直在用我得到的一本书编写代码。该应用程序只是假设从列表 Activity 中运行一堆测试 Activity 家。我测试了列表 Activity ,它运行良好。我还尝试测试 Activity 列表中的第一个 Activity ,它只是在尝试加载它时卡住了,并且只会继续尝试加载它。除了包名之外,我的代码实际上是从书中逐字记录的。我知道它找到了类(class),只是 Activity 没有启动,我不知道为什么。我觉得我只是遗漏了一些简单的东西或忽略了一个小错误。到目前为止,这是我为该应用程序准备的三个文件。我很确定这与 Intent 有关 AndroidBasicStarter.java,但我包含了所有内容以防万一。

编辑:我在加载 LifeCycleTest.java 时遇到问题。我没有再编写任何测试代码,因为第一个不起作用,我也不知道为什么。

AndroidBasicStarter.java

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

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

<?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>

日志

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

提前致谢。

最佳答案

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

关于android - 无法使用 Intent 从 ListActivity 启动新 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19303514/

相关文章:

android - 如何在 Exoplayer 2 中播放 .ts

android - 如何使用 RadioButton 扩充布局然后添加到 RadioGroup?

android - 从图库文件路径中选择图像返回 NULL

java - 为什么我的数据包没有发送到我的其他 Activity ?

android - 应用恢复时显示特定 Activity

从其他 Activity 返回后,android surfaceview 不再可见

android - 如何从网站向 Android 发送 Firebase 通知

Android 开发者 - 如何在主屏幕上创建导致操作的按钮

android - 无法创建主屏幕快捷方式

android - 迭代 Retrofit 响应