困惑于FATAL EXCEPTION:主要由NullPointerException引起

时间:2014-09-13 15:47:15

标签: java android eclipse nullpointerexception fatal-error

我现在非常困惑!我正在制作我的第一个Android应用程序,当我只有一个活动时,我没有错误。但在我添加第二个活动后,我得到一个致命的例外:主要。

这是我的stacktrace:

09-13 11:08:12.106: E/AndroidRuntime(14008): FATAL EXCEPTION: main
09-13 11:08:12.106: E/AndroidRuntime(14008): Process: com.bignerdranch.android.geoquiz, PID:        14008
09-13 11:08:12.106: E/AndroidRuntime(14008): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.bignerdranch.android.geoquiz/com.bignerdranch.android.geoquiz.QuizActivity}:java.lang.NullPointerException
09-13 11:08:12.106: E/AndroidRuntime(14008):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2413)
09-13 11:08:12.106: E/AndroidRuntime(14008):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2471)
09-13 11:08:12.106: E/AndroidRuntime(14008):    at android.app.ActivityThread.access$900(ActivityThread.java:175)
09-13 11:08:12.106: E/AndroidRuntime(14008):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
09-13 11:08:12.106: E/AndroidRuntime(14008):    at android.os.Handler.dispatchMessage(Handler.java:102)
09-13 11:08:12.106: E/AndroidRuntime(14008):    at android.os.Looper.loop(Looper.java:146)
09-13 11:08:12.106: E/AndroidRuntime(14008):    at android.app.ActivityThread.main(ActivityThread.java:5602)
09-13 11:08:12.106: E/AndroidRuntime(14008):    at java.lang.reflect.Method.invokeNative(Native Method)
09-13 11:08:12.106: E/AndroidRuntime(14008):    at java.lang.reflect.Method.invoke(Method.java:515)
09-13 11:08:12.106: E/AndroidRuntime(14008):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
09-13 11:08:12.106: E/AndroidRuntime(14008):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
09-13 11:08:12.106: E/AndroidRuntime(14008):    at dalvik.system.NativeStart.main(Native Method)
09-13 11:08:12.106: E/AndroidRuntime(14008): Caused by: java.lang.NullPointerException
09-13 11:08:12.106: E/AndroidRuntime(14008):    at com.bignerdranch.android.geoquiz.QuizActivity.updateQuestion(QuizActivity.java:40)
09-13 11:08:12.106: E/AndroidRuntime(14008):    at com.bignerdranch.android.geoquiz.QuizActivity.onCreate(QuizActivity.java:70)
09-13 11:08:12.106: E/AndroidRuntime(14008):    at android.app.Activity.performCreate(Activity.java:5451)
09-13 11:08:12.106: E/AndroidRuntime(14008):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
09-13 11:08:12.106: E/AndroidRuntime(14008):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2377)
09-13 11:08:12.106: E/AndroidRuntime(14008):    ... 11 more

但是,然后,我在我的QuizActivity.java中转到第70行,注释掉一段代码,运行它并得到此错误:

Warning: Activity not started, its current task has been brought to the front

然后我取消注释第70行的代码部分,重新​​运行它,点击模拟器上的后退空间,我的程序就在那里,运行得很好!我在代码中没有任何改变,当我在两个不同的时间运行我的程序时,我得到两个完全不同的结果!我想解释为什么会发生这种情况!

以下是我在第70行首先注释的代码:

mQuestionTextView = (TextView)findViewById(R.id.question_text_view);
updateQuestion();

这是第40行的updateQuestion():

private void updateQuestion() {
    int question = mQuestionBank[mCurrentIndex].getQuestion();
    mQuestionTextView.setText(question);
}

非常感谢任何帮助!

编辑:当我收到致命错误时,我做了清理,构建和重新编程程序:主要错误,我仍然继续收到消息。

2 个答案:

答案 0 :(得分:0)

你会得到警告:

Warning: Activity not started, its current task has been brought to the front

如果您尝试从eclipse重新运行应用程序而不进行任何更改。例如,如果您右键单击您的项目并选择“作为Android应用程序运行”,如果设备上的应用程序已过期,eclipse将重新构建它并重新启动启动活动。如果您没有对应用程序进行任何更改,然后再次右键单击您的项目并选择“作为Android应用程序运行”,您将收到该警告,因为eclipse不会更新应用程序,甚至不会重新启动它,它只是将当前正在运行的应用程序带到前台。

此外,如果你的应用程序崩溃,它可能会重新启动,这可能会增加你的困惑,因为你认为应用程序崩溃并且没有运行,但实际上它正在运行,并且仍然可以被带到前面在警告中说明。

答案 1 :(得分:-2)

原因是NullPointerException。检查代码中的值(调试可能对您有所帮助)。