【问题标题】:NullPointer on Bitmap.getWidth in Codenameone Android appCodenameone Android 应用程序中 Bitmap.getWidth 上的 NullPointer
【发布时间】:2017-03-10 14:17:28
【问题描述】:

我有一个在 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)

【问题讨论】:

    标签: codenameone


    【解决方案1】:

    如果图像通过错误的管道并且底层的原生图像消失了,就会发生这种情况。如果图像是字体图像或类似的“异国情调”图像,请尝试使用toEncodedImage() 或类似方法将其转换为常规图像。

    如果您在图像上显式调用dispose(),也会发生这种情况。

    【讨论】:

      猜你喜欢
      • 2019-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多