【问题标题】:Confused about FATAL EXCEPTION:main caused by NullPointerException对 FATAL EXCEPTION 感到困惑:主要由 NullPointerException 引起
【发布时间】:2014-11-07 14:41:26
【问题描述】:

我现在超级迷茫!我正在制作我的第一个 android 应用程序,当我只有一个活动时,我没有任何错误。但是在我添加了第二个活动之后,我得到了一个 FATAL EXCEPTION:main。

这是我的堆栈跟踪:

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);
}

任何帮助将不胜感激!

编辑:当我收到 FATAL EXCEPTION:main 错误时,我确实清理、构建并重新运行了程序,但我仍然不断收到消息。

【问题讨论】:

  • Warning: Activity not started, its current task has been brought to the front 不是错误 - 这是一个警告 ;) 执行清理、重建并再次运行应用程序。
  • 我认为您在这里确实有 2 个问题,1 是您对未开始的活动警告感到困惑,第二是您的空指针异常需要帮助。我尝试在下面回答 1,一旦您对警告感到困惑,我认为您应该输入第二个问题,显示更多代码来询问您的 NPE

标签: java android eclipse nullpointerexception fatal-error


【解决方案1】:

你会收到警告:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-08
      • 1970-01-01
      • 2017-12-05
      • 1970-01-01
      • 2015-10-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多