旋转android时显示NullPointerException(显示更改大小)

时间:2012-09-10 16:37:29

标签: java android android-canvas

我正在使用android& canvas,我的代码完美无缺,除了显示分辨率改变(即旋转设备)app forcecloses和log cat shows:

  

致命异常:Thread-367

     

显示java.lang.NullPointerException

     

at ... 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%的时间都会发生碰撞。

有什么想法吗?谢谢:))

1 个答案:

答案 0 :(得分:0)

这可能会对你有所帮助

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

      if your  android:targetSdkVersion="13" or more
  android:configChanges="orientation|keyboardHidden|screenSize">