Nullpointerexception in getView des benutzerdefinierten ArrayAdapter

8

Ich erhalte eine Nullpointerexzeption in meinem benutzerdefinierten ArrayAdapter in meiner App. Ich weiß nicht, warum hier ein Nullpointer steht. Und ich kann diese Ausnahme nicht reproduzieren. Die Ausnahme erschien nicht lange und ich habe keine Code-Änderungen, so dass es noch seltsamer macht. Der Code ist:

%Vor%

Die Ausnahme wird in der getView-Methode in der ersten Zeile ausgelöst. Ich habe meine App debugged und super.getView mit Nullparametern aufgerufen, aber keine Nullpointerexception wurde ausgelöst, also sieht es so aus, dass super null war, aber wie kann das sein ??? Der StackTrace ist:

  

java.lang.NullPointerException   bei android.widget.ArrayAdapter.createViewFromResource (ArrayAdapter.java:355)   bei android.widget.ArrayAdapter.getView (ArrayAdapter.java:323)   bei de.hartig.abt.activity.BluetoothDeviceList $ MyAdapter.getView (BluetoothDeviceList.java : 140)   bei android.widget.AbsListView.obtainView (AbsListView.java:1408)   bei android.widget.ListView.makeAndAddView (ListView.java:1727)   bei android.widget.ListView.fillDown (ListView.java:652)   bei android.widget.ListView.fillFromTop (ListView.java:709)   bei android.widget.ListView.layoutChildren (ListView.java:1580)   bei android.widget.AbsListView.onLayout (AbsListView.java:1240)   bei android.view.View.layout (View.java:7057)   bei android.widget.FrameLayout.onLayout (FrameLayout.java:333)   bei android.view.View.layout (View.java:7057)   bei android.widget.LinearLayout.setChildFrame (LinearLayout.java:1249)   bei android.widget.LinearLayout.layoutVertical (LinearLayout.java:1125)   bei android.widget.LinearLayout.onLayout (LinearLayout.java:1042)   bei android.view.View.layout (View.java:7057)   bei android.widget.FrameLayout.onLayout (FrameLayout.java:333)   bei android.view.View.layout (View.java:7057)   bei android.view.ViewRoot.performTraversals (ViewRoot.java:1045)   bei android.view.ViewRoot.handleMessage (ViewRoot.java:1727)   bei android.os.Handler.dispatchMessage (Handler.java:99)   bei android.os.Looper.loop (Looper.java:123)   bei android.app.ActivityThread.main (ActivityThread.java:4680)   at java.lang.reflect.Method.invokeNative (Native Methode)   bei java.lang.reflect.Method.invoke (Methode.java:521)   bei com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:858)   bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616)   bei dalvik.system.NativeStart.main (Native Methode)

Weiß jemand, wie ich dieses Problem lösen kann? Danke für die Hilfe !!!

    
user695571 06.04.2011, 20:37
quelle

2 Antworten

14

Sie rufen wahrscheinlich add mit einem null Wert an und der ArrayAdapter erstickt daran. Um das Problem weiter zu diagnostizieren, müssen wir den Code für fetchAllDevicesAsMap sehen oder wo auch immer Sie Elemente zu ArrayAdapter hinzufügen.

Ein Auszug aus ArrayAdapter.java in createViewFromResource :

%Vor%

Dies zeigt an, dass ArrayAdapter einem NullPointerException erliegen wird, wenn eines der Elemente im zugrunde liegenden Array null ist.

    
Matthew Willis 06.04.2011 20:46
quelle
2

Aus dem Stack-Trace können Sie deutlich sehen, dass super nicht null war, da es in android.widget.ArrayAdapter.getView() ging.

Sie können sich die Quelle für android.widget.ArrayAdapter.createViewFromResource line 355 ansehen, um zu versuchen, die wahre Ursache Ihres Nullzeigers zu ermitteln.

AKTUALISIEREN

Ich habe einen kurzen Blick auf den Code geworfen, und es fehlt in dieser Zeile text.setText(item.toString()); , so dass entweder text oder item null sind.

Sie können sich den Code hier ansehen: android.widget. ArrayAdapter-Quelle

    
Justin Waugh 06.04.2011 20:46
quelle