2017-03-09 11 views
1

Android上で実行されているCodenameOneでアプリが作成されていて、あまりにも多くの画像の拡大/縮小を試みた後にNullPinterExpectionsを投げています。私は状況を助けるためにCacheMapを使用しましたが、余りにも多くのイメージを読み込んだ後でも問題が発生します。ここでCodenameoneのBitmap.getWidthのNullPointer Androidアプリ

は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) 

答えて

0

画像がスルー行った場合に発生することができますパイプラインが間違っていて、元のネイティブイメージがなくなっています。イメージがフォントイメージまたは同様の「エキゾチック」イメージの場合は、toEncodedImage()または同様の方法を使用して通常のイメージに変換してみてください。

画像にdispose()を明示的に呼び出した場合にも発生する可能性があります。

関連する問題