【问题标题】:My app freezes crashes when it's supposed to go to the next activity我的应用程序在应该进入下一个活动时冻结崩溃
【发布时间】:2015-02-24 04:39:25
【问题描述】:

我不知道为什么应用程序在应该转到下一个 Activity 时崩溃。我制作了一个练习应用程序,在使用相同格式时可以正常工作。我把文件上传到gist.github

错误是

1216-1216/com.example.chiozokamalu.newfreshstart E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.ArrayIndexOutOfBoundsException
            at com.example.chiozokamalu.newfreshstart.MainActivity.onClick(MainActivity.java:164)
            at android.view.View.performClick(View.java:2485)
            at android.view.View$PerformClick.run(View.java:9080)
            at android.os.Handler.handleCallback(Handler.java:587)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:130)
            at android.app.ActivityThread.main(ActivityThread.java:3683)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:507)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
            at dalvik.system.NativeStart.main(Native Method)

在 MainActivity.java 的第 164 行:

questionView.setText(questions[questionIndex]); // set the text to the next question

编辑:在 Varun 帮助我之后,我得到了一个新错误

1307-1307/com.example.chiozokamalu.newfreshstart E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.chiozokamalu.newfreshstart/com.example.chiozokamalu.newfreshstart.Results1}: java.lang.NullPointerException
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
        at android.app.ActivityThread.access$1500(ActivityThread.java:117)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:130)
        at android.app.ActivityThread.main(ActivityThread.java:3683)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:507)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
        at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.NullPointerException
        at com.example.chiozokamalu.newfreshstart.Results1.onCreate(Results1.java:58)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
            at android.app.ActivityThread.access$1500(ActivityThread.java:117)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:130)
            at android.app.ActivityThread.main(ActivityThread.java:3683)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:507)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
            at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

  • 向我们展示任何来自 andorid logcat 的崩溃日志。
  • 它在 com.example.chiozokamalu.newfreshstart.MainActivity.onClick(MainActivity.java:164) 处显示 java.lang.ArrayIndexOutOfBoundsException,那么 MainActivity.java 的第 164 行是什么?
  • @Pang questionView.setText(questions[questionIndex]); // 将文本设置为下一个问题

标签: android android-activity nullpointerexception


【解决方案1】:

第 1 行的问题数组。 164 超出范围,这意味着 questionIndex 大于问题数组的总长度。因此,您应该在从数组中提取值之前添加对长度的检查。

您已添加检查,但之后您增加了值,因此您将 if 条件修改为 if (questionIndex < questions.length -1)

或者修改if条件前的questionIndex变量

您遇到问题是因为您尚未启动 resultView9,这就是为什么它为 null 并提供 nullpointer,只需像您对其他操作一样启动它,一切都很好。您已经初始化了 resultView8 两次,只需在此处添加 resultview9

【讨论】:

  • “添加支票”是什么意思?我确实更改为“if (questionIndex
  • ok 做一件事,将 questionIndex++ 行放在 if (questionIndex
  • 仍然不起作用;由于文本空间有限,我无法发布所有内容。继承人显示在第一行的错误“1307-1307/com.example.chiozokamalu.newfreshstart E/AndroidRuntime:致命异常:主要 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.chiozokamalu.newfreshstart/ com.example.chiozokamalu.newfreshstart.Results1}: java.lang.NullPointerException"
  • 异常不同了,现在它已从 Index out of bound 更改为 nullpointer,现在错误出现在您的第二个活动中,这意味着第二个活动正在启动。请编辑您的问题并在此处添加完整的 logcat。问题基本解决了
  • 遇到了你没有启动 resultView9 的问题,这就是为什么它为 null 并给出 nullpointer,只需像你对其他所做的那样初始化它,一切都很好。您已经初始化了 resultView8 两次,只需在此处添加 resultview9
猜你喜欢
  • 1970-01-01
  • 2017-01-03
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多