Ich versuche, skalierte Bitmap zu erstellen, aber auf wenigen Geräten (nicht alle) bekomme ich diese Ausnahme.Android: java.lang.NullPointerException bei android.graphics.Bitmap.createScaledBitmap (Bitmap.java:490)
Bitmap bit = BitmapFactory.decodeFile(uri);
Bitmap bitmap1= Bitmap.createScaledBitmap(bit, 50, 50, true); <--- This line causes null pointer
Der komplette Stacktrace ist unten:
java.lang.NullPointerException
at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:490)
at com.my.app.adapters.MyAdapter.onBindViewHolder(MyAdapter.java:101)
at com.my.app.adapters.MyAdapter.onBindViewHolder(MyAdapter.java:35)
at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:5217)
at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:5250)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4487)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4363)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1961)
at android.support.v7.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:458)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1333)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:562)
at android.support.v7.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:171)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2900)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3071)
at android.view.View.layout(View.java:14143)
at android.view.ViewGroup.layout(ViewGroup.java:4666)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1655)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1513)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1426)
at android.view.View.layout(View.java:14143)
at android.view.ViewGroup.layout(ViewGroup.java:4666)
at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
at android.view.View.layout(View.java:14143)
at android.view.ViewGroup.layout(ViewGroup.java:4666)
at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
at android.view.View.layout(View.java:14143)
at android.view.ViewGroup.layout(ViewGroup.java:4666)
at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
at android.view.View.layout(View.java:14143)
at android.view.ViewGroup.layout(ViewGroup.java:4666)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1655)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1513)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1426)
at android.view.View.layout(View.java:14143)
at android.view.ViewGroup.layout(ViewGroup.java:4666)
at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
at android.view.View.layout(View.java:14143)
at android.view.ViewGroup.layout(ViewGroup.java:4666)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1655)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1513)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1426)
at android.view.View.layout(View.java:14143)
at android.view.ViewGroup.layout(ViewGroup.java:4666)
at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
at android.view.View.layout(View.java:14143)
at android.view.ViewGroup.layout(ViewGroup.java:4666)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2024)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1845)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1138)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4645)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
at android.view.Choreographer.doCallbacks(Choreographer.java:555)
at android.view.Choreographer.doFrame(Choreographer.java:525)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:174)
at android.app.ActivityThread.main(ActivityThread.java:4952)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
at dalvik.system.NativeStart.main(Native Method)
Wenn ich jetzt auf Bitmap.java Linie 490 aussehen, gibt es keinen Code dort. Ich bin mir nicht sicher, wie ich dieses Problem lösen soll. Kann jemand irgendwelche Vorschläge machen, oder wird es noch besser, wenn jemand helfen kann? Danke im Voraus !!
long bufferSize = (long)elements << shift;
long pixelSize = getByteCount();
<-- Line 490
if (bufferSize < pixelSize) {
throw new RuntimeException("Buffer not large enough for pixels");
}
Haben Sie verifiziert, dass 'bit' nicht null ist? – dharms
Zunächst kann die BitmapFactory.decodeFile (..) eine Null zurückgeben, wenn sie ein Bild nicht dekodieren kann. Sie sollten dies zuerst überprüfen. –
In Bezug auf diesen fehlenden Code in Zeile 490 könnten Sie auf einem Gerät mit einer anderen API-Version als Ihrem Quellcode bereitstellen –