【问题标题】:Android Studio Application does not starts from the main menu and crashes on the click of a buttonAndroid Studio 应用程序不会从主菜单启动并在单击按钮时崩溃
【发布时间】:2015-09-17 07:53:25
【问题描述】:

我是一个android初学者,我正在尝试制作一个问答游戏。尽管该应用程序正在我的手机中运行,但几乎没有问题。 (使用真实设备)

第一个问题 - 应用程序第一次运行良好,游戏完成后,如果您按下后退按钮,它会导航到主菜单。之后,如果您单击开始按钮,应用程序就会崩溃(不幸的是,appname 已停止。)

第二个问题 - 退出游戏后,如果我再次启动应用程序,它会从测验而不是主菜单开始。

我该如何修复它们?



这是 logcat 错误报告

09-17 15:33:57.333 11833-11833/com.example.ice.quizgametest E/ViewRootImpl:onInputEvent:dispatchAttachedToWindow 没有被调用。[event:KeyEvent { action=ACTION_UP, keyCode=KEYCODE_BACK, scanCode=158, metaState=0 , flags=0x8, repeatCount=0, eventTime=47573455, downTime=47573407, deviceId=2, displayId=0, source=0x101 }] 09-17 15:33:58.384 11833-11833/com.example.ice.quizgametest E/ViewRootImpl﹕sendUserActionEvent() mView == null 09-17 15:34:11.046 11833-11833/com.example.ice.quizgametest E/ViewRootImpl﹕sendUserActionEvent() mView == null 09-17 15:34:12.988 11833-11833/com.example.ice.quizgametest D/AndroidRuntime: 关闭虚拟机 09-17 15:34:12.988 11833-11833/com.example.ice.quizgametest W/dalvikvm: threadid=1: 线程退出未捕获异常 (group=0x41ed7930) 09-17 15:34:12.988 11833-11833/com.example.ice.quizgametest E/AndroidRuntime: 致命异常:主要 java.lang.RuntimeException: 无法启动活动 ComponentInfo{com.example.ice.quizgametest/com.example.ice.quizgametest.quiz}: java.lang.ArrayIndexOutOfBoundsException: length=2;指数=2 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2255) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2309) 在 android.app.ActivityThread.access$700(ActivityThread.java:157) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1289) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:176) 在 android.app.ActivityThread.main(ActivityThread.java:5319) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:511) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 在 dalvik.system.NativeStart.main(本机方法) 引起:java.lang.ArrayIndexOutOfBoundsException: length=2;索引=2 在 com.example.ice.quizgametest.quiz.onCreate(quiz.java:45) 在 android.app.Activity.performCreate(Activity.java:5326) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2218) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2309) 在 android.app.ActivityThread.access$700(ActivityThread.java:157) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1289) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:176) 在 android.app.ActivityThread.main(ActivityThread.java:5319) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:511) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 在 dalvik.system.NativeStart.main(本机方法)

【问题讨论】:

  • 你的问题说明你对一个android应用的生命周期并不熟悉。你应该好好研究一下这个理论。
  • 请您在应用程序崩溃时发布 logcat 错误报告以及部分代码...而不是给我们完整的项目

标签: android android-studio crash


【解决方案1】:

问题 1

你粘贴在那里的异常告诉你一切。首先,当您在大多数常见情况下分析异常时,您必须找到异常的“原因”部分。 这一行:

原因:java.lang.ArrayIndexOutOfBoundsException:length=2;索引=2

它告诉您尝试从数组大小之外获取或设置元素。可能您从 1 而不是 0 或任何其他原因开始索引。 下一行:

在 com.example.ice.quizgametest.quiz.onCreate(quiz.java:45)

为您提供发生异常的完整路径。它的类:quiz,方法:onCreate,行:45。只需调试这种情况并尝试找到您的解决方案。

问题 2

您必须阅读有关 Activity LifeCycle 的信息。

【讨论】:

  • 感谢您的回答。 tv.setText(问题[位置]);这是测验课的第 45 行。可能是试图找到不在数组中的位置 2。我该如何解决?
  • @msa 您的静态变量位置可能永远不会设置为默认值。您必须阅读有关静态变量和垃圾收集器的信息。可能如果您在此活动中创建 onDestroy 事件并将您的位置变量设置为 0 一切都会好起来的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-15
  • 2017-07-04
  • 1970-01-01
  • 2017-03-15
  • 1970-01-01
相关资源
最近更新 更多