我的应用程序是一个儿童应用程序,有 4 个游戏(单独的活动),它们都需要相同的声音。首次打开应用程序时,我将大约 150 个 1-2 秒的声音加载到与这些活动 (Config.java) 分开的类中的 SoundPool 文件中。从 4 款游戏中的任何一款中恢复应用程序时,我会检查 SoundPool 是否仍加载:
@Override
protected void onResume() {
super.onResume();
if (Config.spool != null) {}
else {
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);}
}
其中 MainActivity(在 onCreate 中)调用 Config.java 以重新创建 SoundPool,提供 3 秒的加载/徽标屏幕,然后将用户带回 GameSelector 活动,在那里他们可以选择游戏。通过测试我没有遇到任何空指针异常。我在 3 周前发布了这个应用程序,昨天我在请求在其中一个游戏的 onCreate 中播放声音时收到了第一个空指针报告(这是第 243 行):
if (voice == 2) {Sound(Config.alphabetSoundsArray_voice2[currentIndex]);}
这可能是因为 SoundPool 没有完全加载吗?我无法复制问题。强制关闭报告中的堆栈跟踪:
java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.zenlifegames.teachtryabc123/com.zenlifegames.teachtryabc123.Game2Show}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
at android.app.ActivityThread.access$700(ActivityThread.java:143)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4950)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.zenlifegames.teachtryabc123.Game2Show.setImages(Game2Show.java:243)
at com.zenlifegames.teachtryabc123.Game2Show.onCreate(Game2Show.java:57)
at android.app.Activity.performCreate(Activity.java:5179)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074)
... 11 more
我已准备好按要求发布代码,只是不确定什么会有所帮助以及什么会使问题变得混乱。提前致谢!