无论如何:我正在学习安卓机器游戏中的(非常好的)书籍的安卓游戏编程。 今天我终于完成了Nom先生的游戏,这本书用来解释游戏编程的基础知识。没有错误(我发现该书的android 4版本有一些错误......但无论如何)在代码上。所以我在api 8模拟器上运行应用程序。一切似乎都很好;但是当我启动应用程序时,屏幕上会出现错误:
申请先生Nom(进程com.badlogic.androidgames.mrnom)意外停止了。请稍后再试“。
非常糟糕。所以我查看logcat,这些是错误:
01-28 18:32:54.103: E/AndroidRuntime(330): FATAL EXCEPTION: main
01-28 18:32:54.103: E/AndroidRuntime(330): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.badlogic.androidgames.mrnom/com.badlogic.androidgames.mrnom.MrNomGame}: java.lang.NullPointerException
01-28 18:32:54.103: E/AndroidRuntime(330): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
01-28 18:32:54.103: E/AndroidRuntime(330): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
01-28 18:32:54.103: E/AndroidRuntime(330): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
01-28 18:32:54.103: E/AndroidRuntime(330): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
01-28 18:32:54.103: E/AndroidRuntime(330): at android.os.Handler.dispatchMessage(Handler.java:99)
01-28 18:32:54.103: E/AndroidRuntime(330): at android.os.Looper.loop(Looper.java:123)
01-28 18:32:54.103: E/AndroidRuntime(330): at android.app.ActivityThread.main(ActivityThread.java:4627)
01-28 18:32:54.103: E/AndroidRuntime(330): at java.lang.reflect.Method.invokeNative(Native Method)
01-28 18:32:54.103: E/AndroidRuntime(330): at java.lang.reflect.Method.invoke(Method.java:521)
01-28 18:32:54.103: E/AndroidRuntime(330): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-28 18:32:54.103: E/AndroidRuntime(330): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-28 18:32:54.103: E/AndroidRuntime(330): at dalvik.system.NativeStart.main(Native Method)
01-28 18:32:54.103: E/AndroidRuntime(330): Caused by: java.lang.NullPointerException
01-28 18:32:54.103: E/AndroidRuntime(330): at com.badlogic.androidgames.framework.impl.AndroidFileIO.<init>(AndroidFileIO.java:25)
01-28 18:32:54.103: E/AndroidRuntime(330): at com.badlogic.androidgames.framework.impl.AndroidGame.onCreate(AndroidGame.java:51)
01-28 18:32:54.103: E/AndroidRuntime(330): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-28 18:32:54.103: E/AndroidRuntime(330): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
01-28 18:32:54.103: E/AndroidRuntime(330): ... 11 more
所以:在另一个主题中我发现我的问题是cammon super-noob问题:实际上你必须在Manifest文件中添加你所有的活动:奇怪的是我实际上已经加载了所有活动(一个)在清单上。这是:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.badlogic.androidgames.mrnom"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon"
android:label="Mr. Nom"
android:debuggable="true">
<activity android:name=".MrNomGame"
android:label="Mr. Nom"
android:configChanges="keyboard|keyboardHidden|orientation"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="8"/>
</manifest>
那么错误在哪里?我仔细检查了所有类和接口,即使是书籍网站上的源代码(http://code.google.com/p/beginning-android-games/),如果它可以帮助找出问题,也因为我无法加载所有30多个游戏类);资产包含书籍网站上的bitmaps-ogg文件,我甚至使用了书籍包的相同名称,那么错误在哪里? 再次对不起英语(并打扰我的一个可能非常愚蠢的错误), asduffo
修改 致David M:第25行是:
this.assets = context.getAssets();
在AndroidGame.onCreate()的第51行还有另一个nullpoiterexception
fileIO = new AndroidFileIO(getAssets());