Android canvas setMatrix(null)崩溃(如果前面是getMatrix)

时间:2010-10-14 21:00:08

标签: android

在月球着陆器示例中,如果我将以下两行添加到doDraw方法的顶部,则应用程序会立即崩溃并出现NullPointerException:

Matrix m = canvas.getMatrix();
canvas.setMatrix( null );

堆栈跟踪是:

FATAL EXCEPTION: Thread-8
java.lang.NullPointerException
    at android.graphics.Matrix.preConcat(Matrix.java:233)
    at android.view.Surface$CompatibleCanvas.setMatrix(Surface.java:259)
    at com.example.android.lunarlander.LunarView$LunarThread.doDraw(LunarView.java:617)
    at com.example.android.lunarlander.LunarView$LunarThread.run(LunarView.java:360)

setMatrix的画布文档指出If the matrix parameter is null, then the current matrix is reset to identity,因此没有理由这会崩溃。

另外,如果我在调用setMatrix(null)之前调用getMatrix,则setMatrix(null)成功。所以不知何故,这是导致问题的两个调用的组合。

这是怎么回事?!

0 个答案:

没有答案