ここでは解決できない問題が発生しています。私は単純なAndroidゲームを開発していて、ほとんどすべてを実装していましたが、いくつかの障害を追加することにしました(ゲームは月着陸船スタイルのゲームです)。
基本的に、私は小惑星クラスを作成し、それらを画面に描画しようとしています。ゲームをロードすると、小惑星が描画され、すべてが正常に機能しますが、ホームボタンを押すか、電源をオフにしてからゲームを再起動すると、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オブジェクト/画像のいずれかがnullであることを示唆しますが、これの前に、キャンバスがnullではないことを確認します。また、ビットマップ内で、画像がnullではないことを確認します。
public Bitmap getBitmap() {
if(asteroidImage == null)
asteroidImage = BitmapFactory.decodeResource(mGameView.getContext().getResources(),
R.drawable.asteroid);
return asteroidImage;
}
何かご意見は?