我遇到了一个我似乎无法在这里解决的问题!我正在开发一个简单的 android 游戏并且几乎实现了所有东西,但后来决定添加一些障碍(游戏是月球着陆器风格的游戏)。
基本上,我创建了一个 Asteroid 类,只是想在屏幕上绘制它们。加载游戏时,小行星被绘制,一切正常,但如果你按下主页按钮或关闭电源然后重新启动游戏,我会得到一个 NPE:
03-04 21:33:21.243: E/AndroidRuntime(10748): FATAL EXCEPTION: Thread-680
03-04 21:33:21.243: E/AndroidRuntime(10748): java.lang.NullPointerException
03-04 21:33:21.243: E/AndroidRuntime(10748): at com.swiss196.LunarLander.GameThread.doDraw(GameThread.java:421)
03-04 21:33:21.243: E/AndroidRuntime(10748): at com.swiss196.LunarLander.GameThread.run(GameThread.java:386)
它指向以下代码:
canvas.drawBitmap(test2.getBitmap(), 120, 120, null);
这表明 getBitmap 返回的画布或 test2 对象/图像为空,但在此之前,我检查画布是否不为空。在位图中,我检查图像也不为空:
public Bitmap getBitmap() {
if(asteroidImage == null)
asteroidImage = BitmapFactory.decodeResource(mGameView.getContext().getResources(),
R.drawable.asteroid);
return asteroidImage;
}
有什么想法吗?