Ich habe BitmapScalingHelper.java:
%Vor%In dieser Klasse gibt es:
%Vor%... gibt ein skaliertes Bitmap-Bild zurück.
In einer anderen Klasse habe ich diese Methode:
%Vor%Dieser Code funktionierte auf vielen Geräten einwandfrei. Aber es stürzte bei einigen Geräten ab. Kann mir bitte jemand helfen?
Ich bekomme ein Protokoll wie folgt:
%Vor%Wenn es sich um ein Berechtigungsproblem handelt, sollte es unter der Android-M-Version nicht abstürzen, aber es stürzt auch bei einigen Pre-Android-M-Geräten ab.
Das Problem, dem Sie gegenüberstehen, ist, dass Sie getWidth()
auf Ihrem unscaledBitmap
in der Funktion createScaledBitmap
versuchen. Offensichtlich ist Ihr unscaledBitmap
manchmal null
; und der Aufruf von getWidth()
verursacht die Nullzeiger-Ausnahme.
Die Ursache ist, dass decodeResource
Ihnen aus irgendeinem Grund einen Nullwert zurückgibt.
Die Gründe können umfassen -
Ich würde vorschlagen, dass Sie Ihren Code ändern, um eine Null-Überprüfung für das decodierte Bitmap einzubeziehen, es zu protokollieren und von dort auf den spezifischen Geräten zu debuggen, bei denen der Fehler auftritt.
Es kann auch sein, dass Ihre Optionsvariable, die Sie wiederverwenden, im zweiten Aufruf von decodeResource
anders interpretiert wird. Sie könnten versuchen, dort eine Null zu übergeben.
Der modifizierte Code sollte wie folgt aussehen -
%Vor% Sie verwenden: Bitmap decodeFile (String pathName)
Diese Methode gibt möglicherweise null zurück, wenn die Dekodierung der Datei fehlschlägt.
Ich denke, dass es mit Berechtigungsproblemen auf einem Gerät verbunden sein kann oder das Bildformat nicht unterstützt wird.
Wenn Sie GIF verwenden, versuchen Sie Ссылка
Es gibt einige Gründe, die den Fehler verursachen können.
Aus dem Code, den Sie posten, kann ich keinen logischen Fehler finden. Hier sind meine Vorschläge:
Ändern Sie ein anderes Bild und testen Sie es.
Versuchen Sie, ImageLoader Library wie Glide oder Fresco zu verwenden und zu testen.
Tags und Links android android-activity nullpointerexception android-bitmap