当叠加位图时出现android.graphics.Canvas.throwIfRecycled错误

7

我正在尝试使用以下方法在画布上叠加图像:

private Bitmap overlay(Bitmap bmp1, Bitmap bmp2) {

    bmOverlay = Bitmap.createBitmap(70, 70, Bitmap.Config.RGB_565);
    canvas = new Canvas(bmOverlay);
    canvas.drawBitmap(bmp1, 0, 0, null);  //line 179
    canvas.drawBitmap(bmp2, 0, 0, null);
    return bmOverlay;           
}

然而,我的应用程序一直崩溃,日志显示:
java.lang.NullPointerException at android.graphics.Canvas.throwIfRecycled(Canvas.java:954) at android.graphics.Canvas.drawBitmap(Canvas.java:980) at com.MyApp.overlay(MyApp.java:179)
有人能帮忙吗?

顺便说一下,这是间歇性发生的。我正在从互联网下载图像,并根据某些条件叠加每个图像的框架。bmp1是我下载的图像,bmp2是我用来叠加它们的框架。 - northdig
你确定bmp1不是空的吗? - Maurits Rijk
现在看到你的评论,我感到非常无语。我会回复你的,但我相信我在try/catch中引用了这种方法。在这种情况下,它应该在我的try/catch之外。更多细节即将到来。谢谢Maurits。:0) - northdig
是的,你解决了吗?我也遇到了同样的问题(而且很难测试/复现)。 - chesterbr
2个回答

4

我在尝试将位图绘制到画布时遇到了同样的trowIfRecycled异常。我尝试在启动的线程中绘制,但程序还没有初始化位图。所以在我的情况下,位图为null,我需要寻找更好的地方进行初始化。


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接