我尝试使用以下方法在画布上叠加图像:
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)
有人可以帮忙吗?
答案 0 :(得分:4)
我在尝试将位图绘制到画布时遇到了相同的trowIfRecycled异常。在程序开始初始化位图之前,我试图在我开始的线程中绘制。所以在我的情况下:位图为空,我不得不寻找一个更好的地方进行初始化。
答案 1 :(得分:2)
虽然这是一个老问题,但我发现这是我的解决方案。 http://nowherenearithaca.blogspot.com/2011/06/solved-bizarre-null-pointer-thrown-in.html
他们建议的地方
尝试在日食中干净。它似乎有时是缓存,可能会混淆。这似乎解决了这个特殊情况。
答案 2 :(得分:0)
我也有同样的堆栈跟踪,我试图从线程等找到解决方案,但后来我发现我从未在代码中分配过位图变量。