我正在使用 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/