0

我得到一个空指针异常。唯一的问题是,它似乎在所有设备上都不存在,所以对我来说很奇怪..

一个想法可能是Bitmap src 可以为空?但是由于我在前面初始化它,这是不可能的吗?我猜?由于它没有发生在我自己的设备上,我只需要确定......

Bitmap bm = BitmapFactory.decodeResource(C.getResources(), resId);
Bitmap result = mark(bm);

public static Bitmap mark(Bitmap src) {
        int w = src.getWidth();
        // int w = 150;
        int h = src.getHeight();
        // int h = 150;
        Bitmap result = Bitmap.createBitmap(w, h, src.getConfig());

        Canvas canvas = new Canvas(result);
        canvas.drawBitmap(src, 0, 0, null);

        Paint paint = new Paint();
        paint.setColor(Color.GRAY);
        paint.setTypeface(font);
        paint.setTextSize(15);
        paint.setAntiAlias(true);
        canvas.drawText("Hi", 10, 15, paint);

        return result;
    }
4

2 回答 2

1

由于我们没有堆栈跟踪,我假设你在 mark(): 的第一行得到你的异常int w = src.getWidth();

这意味着确实 src 为空。public static Bitmap decodeResource (Resources res, int id)如果图像无法解码,则可能返回 null。

因此,您应该深入挖掘可用的资源。也许在故障设备上缺少 png?

于 2013-02-25T19:35:17.100 回答
0

如果解码有任何问题,DecodeResources 可以返回 null。这可能就是这里发生的事情。

于 2013-02-25T19:30:44.620 回答