java - 旋转 android 时出现 NullPointerException(显示改变大小)

标签 java android android-canvas

我正在使用 android 和 canvas,我的代码在显示分辨率发生变化(即旋转设备)时应用程序强制关闭和 log cat 显示时除外:

FATAL EXCEPTION: 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% 的时间发生。

有什么想法吗?谢谢:)

最佳答案

这对你有帮助

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

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

关于java - 旋转 android 时出现 NullPointerException(显示改变大小),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12355934/

相关文章:

android - Canvas 逐点绘制

Android:带有持续可见滚动条的Fingerpaint

android - Canvas.drawText() 不会在 Android 上呈现大型表情符号

java - Jackson @JsonProperty 注释递归地工作?

java - 在浏览器中显示 java 输出

java - 已编辑 : How can I change date format of Date object?

android - Canvas.drawVertices(...) 什么都不画

java - 在Java中,为什么我的构造函数在外部类中时没有被调用?

android - 如何与 HttpUrlConnection 保持 session ?

android - 在使用 MediaCodec 为 Grafika 的 "Continuous Capture" Activity 编码之前裁剪视频