尝试在canvas textureview android上绘制时获取空指针异常?

时间:2018-08-18 14:53:59

标签: java android textureview

我试图在Android中使用画布在TextureView上绘制。我正在线程内执行此操作,但是由于某些原因,当我尝试运行程序时,出现了 null指针异常。我已经在surfaceAvailable()回调中实现了我的线程,但仍然无法绘制。我可能做错了什么?

这是我到目前为止尝试过的:

这是我的堆栈跟踪:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.graphics.Canvas.drawColor(int, android.graphics.PorterDuff$Mode)' on a null object reference

1 个答案:

答案 0 :(得分:1)

我相信问题就在这里

final Canvas canvas = mSurface.lockCanvas(null);

看看官方文档:

  

lockCanvas

     

公共抽象画布lockCanvas()

     

开始编辑曲面中的像素。返回的Canvas可用于绘制表面的位图。 如果尚未创建曲面或否则无法对其进行编辑,则返回null 。通常,您将需要实现Callback.surfaceCreated来确定何时可以使用Surface。

您可能正在尝试在创建曲面之前在其上绘图。在这种情况下,必须确保只有在表面准备就绪后才能调用lockCanvas()(侦听表面创建过程)。另外,在这种情况下,应使用不带参数的lockCanvas(),如下所示:

final Canvas canvas = mSurface.lockCanvas();