在Codenameone Android应用程序中的Bitmap.getWidth上的NullPointer

时间:2017-03-09 09:43:13

标签: codenameone

我在Android上运行的CodenameOne中创建了一个应用程序,在尝试缩放太多图像后抛出NullPinterExpections。我已经使用CacheMap来帮助解决这个问题,但是在加载太多图像后仍然会遇到问题。

这是我的代码,从InfiniteContainer fetchComponents

中抛出问题
Image i = (Image) MoveService.getInstance().getImage(thumbnail_url);
        if (i == null) {
            i = theme.getImage(move.getThumbnail_url());
            if (i != null) {
                i = i.fill(width+20, (width / 2) * 3);
                MoveService.getInstance().putImage(move.getThumbnail_url(), i);
            }
        }

以下是我从日志中获得的信息:

[EDT] 0:8:57,596 - Exception: java.lang.NullPointerException - Attempt to      invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference
java.lang.NullPointerException: Attempt to invoke virtual method 'int  android.graphics.Bitmap.getWidth()' on a null object reference
    at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:748)
    at com.codename1.impl.android.c.a(AndroidImplementation.java:1688)
    at com.codename1.k.s.c(Image.java:1008)
    at com.codename1.k.s.c_(Image.java:954)
    at com.codename1.k.s.b(Image.java:919)
    at com.codename1.impl.android.c$8.a(AndroidImplementation.java:6216)
    at com.codename1.k.n.a(EncodedImage.java:627)
    at com.codename1.k.n.b(EncodedImage.java:654)
    at com.codename1.k.s.e(Image.java:903)
    at com.codename1.k.s.f(Image.java:974)
    at com.altitude.studios.polebible.e$b.<init>(Unknown Source)
    at com.altitude.studios.polebible.e$16.a(Unknown Source)
    at com.codename1.k.u.m(InfiniteContainer.java:143)
    at com.codename1.k.u$5.run(InfiniteContainer.java:172)
    at com.codename1.k.m.l(Display.java:1154)
    at com.codename1.k.m.j(Display.java:1098)
    at com.codename1.k.m.i(Display.java:999)
    at com.codename1.k.ad.run(RunnableWrapper.java:120)
    at com.codename1.impl.b$1.run(CodenameOneThread.java:60)
    at java.lang.Thread.run(Thread.java:818)

1 个答案:

答案 0 :(得分:0)

如果图像通过错误的管道并且底层的本机图像消失,则会发生这种情况。如果图像是字体图像或类似的&#34;异国情调&#34;图像尝试使用toEncodedImage()或类似方法将其转换为常规图像。

如果您在图片上明确调用了dispose(),也会发生这种情况。