verursacht durch java.lang.NullPointerException: Versuch, die virtuelle Methode 'int android.graphics.Bitmap.getWidth ()' für eine Nullobjekt-Referenz aufzurufen

9

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.

    
Pavan Bilagi 06.11.2016, 13:46
quelle

3 Antworten

4

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 -

  1. Keine Leseberechtigung
  2. Die Bilddatei ist beschädigt
  3. Es ist nicht genug Speicher vorhanden, um die Datei zu dekodieren
  4. Die Ressource existiert nicht
  5. Ungültige Optionen, die in der Optionenvariablen angegeben sind.

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%     
neur0tic 16.11.2016, 03:34
quelle
0

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 Ссылка

    
Anis BEN NSIR 06.11.2016 13:57
quelle
0

Es gibt einige Gründe, die den Fehler verursachen können.

  1. Fehlen der Berechtigung in AndroidManifest.xml. Lese- oder Schreibberechtigung.
  2. Die Datei existiert nicht oder Sie versuchen auf eine Datei zuzugreifen, die nicht als Bitmap decodiert werden konnte.

Aus dem Code, den Sie posten, kann ich keinen logischen Fehler finden. Hier sind meine Vorschläge:

  1. Ändern Sie ein anderes Bild und testen Sie es.

  2. Versuchen Sie, ImageLoader Library wie Glide oder Fresco zu verwenden und zu testen.

orzangleli 16.11.2016 02:23
quelle