覆盖位图时出错android.graphics.Canvas.throwIfRecycled

时间:2010-03-03 08:55:17

标签: android canvas bitmap nullpointerexception

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

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      在android.graphics.Canvas.throwIfRecycled(Canvas.java:954)      在android.graphics.Canvas.drawBitmap(Canvas.java:980)      在com.MyApp.overlay(MyApp.java:179)

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:4)

我在尝试将位图绘制到画布时遇到了相同的trowIfRecycled异常。在程序开始初始化位图之前,我试图在我开始的线程中绘制。所以在我的情况下:位图为空,我不得不寻找一个更好的地方进行初始化。

答案 1 :(得分:2)

虽然这是一个老问题,但我发现这是我的解决方案。 http://nowherenearithaca.blogspot.com/2011/06/solved-bizarre-null-pointer-thrown-in.html

他们建议的地方

  

尝试在日食中干净。它似乎有时是缓存,可能会混淆。这似乎解决了这个特殊情况。

答案 2 :(得分:0)

我也有同样的堆栈跟踪,我试图从线程等找到解决方案,但后来我发现我从未在代码中分配过位图变量。