2

私はAndroidとCanvasを使用していますが、ディスプレイの解像度が変更された場合(つまり、デバイスを回転させた場合)を除いて、コードは問題なく機能します。アプリは強制終了し、キャットショーをログに記録します。

致命的な例外:スレッド-367

java.lang.NullPointerException

... doDraw()で

エラーをリンクする行には、次のものが含まれます。

canvas.drawARGB(255, 0, 0, 0);

しかし、それが何かを描画しようとしていて、私が最初に描画しようとしているものを示している限り、それは問題ではないと思います。

これが私の実行ループです:

        @Override
    public void run() {
        while (mPlaying) {
            Canvas c = null;
            try {
                c = mSurfaceHolder.lockCanvas(null);
                synchronized (mSurfaceHolder) {
                    if (mPlaying == true) updatePosition();
                    doDraw(c);
                }
        } finally {
                if (c != null) {
                    mSurfaceHolder.unlockCanvasAndPost(c);
                }
            }
        }
    }

これは、LunarLanderの例から直接引用したものです。今では、回転するたびにクラッシュが発生するわけではありませんが、約75%の確率で発生します。

何か案は?ありがとう :)

4

1 に答える 1

0

これはあなたを助けるかもしれません

           if your android:targetSdkVersion="12" or less
     android:configChanges="orientation|keyboardHidden">

      if your  android:targetSdkVersion="13" or more
  android:configChanges="orientation|keyboardHidden|screenSize">
于 2012-09-10T16:57:46.043 に答える