Android Canvas drawcolor 抛出空指针异常

Posted

技术标签:

【中文标题】Android Canvas drawcolor 抛出空指针异常【英文标题】:Android Canvas drawcolor throws Null pointer exception 【发布时间】:2013-03-27 17:58:33 【问题描述】:

开发一款安卓小游戏(支持2.1到4.2),下面的代码经常会抛出java.lang.NullPointerException异常

canvas.drawColor((0xFFAAAAAA);

public class MainGamePanel extends SurfaceView implements SurfaceHolder.Callback 

public void render(Canvas canvas)              

        canvas.drawColor(0xFFAAAAAA);   

        droid.draw(canvas);

    

这是堆栈跟踪

java.lang.NullPointerException
at com.rdx.play.MainGamePanel.render(MainGamePanel.java:186)
at com.rdx.play.MainThread.run(MainThread.java:54)

异常不一致,是什么原因造成的?

非常感谢。

【问题讨论】:

drawColor(( 是错字吧?此外,既然您知道canvas 有时是null,为什么不调试代码并查看对render 的哪个调用发送null 作为参数。 更正了错字,崩溃在 4.0 上可见,但在 2.3 和 2.2 上不可见。 【参考方案1】:

SurfaceHolder.lockCanvas() 允许返回 null(因为您的线程与表面的生命周期不完全相同)。我敢打赌你没有在你的线程函数中处理这种可能性。

【讨论】:

以上是关于Android Canvas drawcolor 抛出空指针异常的主要内容,如果未能解决你的问题,请参考以下文章

Android自定义View学习三---图形绘制

Android自定义控件总结

Android -- 自定义View小Demo,关于Path类的使用

菜鸟求助关于Canvas绘图背景问题。

使用毕加索库获取位图图像

微信小程序使用canvas绘制圆角矩形在Android:变形、锯齿