mein Spinner wirft NullPointerException... need help

R

rufux

Ambitioniertes Mitglied
5
Also ich bin gerade dabei eine Variable Anzahl an Daten aus einer Datenbank in einen String Array zu speichern. das funktioniert auch ohne Probleme.

Also habe ich meine String Array:
Code:
String[] array = new String[100]

Da schonmal meine erste Frage, wie kann ich den Array initialisieren ohne eine feste Größe zu definieren?

so und nun möchte ich den Arrayinhalt in einem Spinner angezeigt haben... folgender Code dazu:

Code:
Spinner s = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, array);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
s.setAdapter(adapter);

So der Spinner wird auch angezeigt, das erste Item auch... doch sobald ich drauf klicke schmiert android ab.

Kann mir jemand helfen und evtl sagen warum das passiert?

VG und Danke
 
Da unsere Hellseher feierabend haben, wäre es nett wenn du den Stacktrace posten würdest....
 
gerne doch ;)

Code:
03-21 13:59:45.816: ERROR/AndroidRuntime(397): Uncaught handler: thread main exiting due to uncaught exception
03-21 13:59:45.846: ERROR/AndroidRuntime(397): java.lang.NullPointerException
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.widget.ArrayAdapter.getDropDownView(ArrayAdapter.java:376)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.widget.Spinner$DropDownAdapter.getDropDownView(Spinner.java:325)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.widget.Spinner$DropDownAdapter.getView(Spinner.java:321)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.widget.AbsListView.obtainView(AbsListView.java:1256)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.widget.ListView.measureHeightOfChildren(ListView.java:1147)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.widget.ListView.onMeasure(ListView.java:1060)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.view.View.measure(View.java:7964)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:888)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:350)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:278)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.view.View.measure(View.java:7964)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:888)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:350)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:278)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.view.View.measure(View.java:7964)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.view.View.measure(View.java:7964)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3023)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.view.View.measure(View.java:7964)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.view.ViewRoot.performTraversals(ViewRoot.java:763)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.os.Looper.loop(Looper.java:123)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at android.app.ActivityThread.main(ActivityThread.java:4363)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at java.lang.reflect.Method.invokeNative(Native Method)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at java.lang.reflect.Method.invoke(Method.java:521)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
03-21 13:59:45.846: ERROR/AndroidRuntime(397):     at dalvik.system.NativeStart.main(Native Method)
 
Offensichtlich war es nicht in der Lage einen View herzustellen - und eine NPE bekommen.
Gibt es entsprechenden Layout-XML überhaupt?
 
rufux schrieb:
Also habe ich meine String Array:
Code:
String[] array = new String[100]
Da schonmal meine erste Frage, wie kann ich den Array initialisieren ohne eine feste Größe zu definieren?

String[] array = null; <- So ist erst ma die Größe offen.

ggfs. kannste eine List<String> benutzen, da ist die größe variabel.

Zum NPE,
...= new String[100]
du hast ein Array mit Platz für 100 String geschaft, damit hast du nun 100Mal "null" drin stehen. (also leeren Inhalt)
Wenn dein Adapter versucht das Array zu laden, kriegst du beim ersten Element schon ne NPE.

regards
 
  • Danke
Reaktionen: rufux
Neeldarax schrieb:
du hast ein Array mit Platz für 100 String geschaft, damit hast du nun 100Mal "null" drin stehen. (also leeren Inhalt)
Wenn dein Adapter versucht das Array zu laden, kriegst du beim ersten Element schon ne NPE.

regards

danke, sowas in der Art dachte ich mir schon. War es auch.

Allerdings habe ich im Moment einfach die Größe auf 2 verringert, da ich mit zwei Testobjekten Arbeite.

Problem ist nur, dass String[] array = null; auch direkt ne RuntimeException wirft.

habs jetzt auch mal mit ner List probiert:

also

Code:
List<string> lst = new ArrayList<String>();

und in meiner Schleife dann wie folgt die Lsite gefüllt:

Code:
lst.set(i, out); //wobei out mein String ist und i meine Position

das ganze versuche ich dann wie oben in den Spinner zu packen mit:

Code:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.layout.simple_spinner_item, lst);

Aber ich bekomme dann hier eine indexoutofBounceException
an folgender Stelle:

Code:
lst.set(i,out);

da ich noch nie eine List benutzt habe weiss ich auch ned, wo ich meinen fehler suchen könnte.

VG

EDIT: geht... mit add anstatt set :)

Danke
 
Zuletzt bearbeitet:
Hallo,
ich hatte auch dieses Problem. Ich hatte ein String Array so initialisiert:
String [] array_spinner = new String[3];

dann fehlerhaft befüllt (siehe index 2)
array_spinner[0] = String.format(my_alerts,"0");
array_spinner[1] = String.format(amazon_alerts,"0");
array_spinner[1] = String.format(marketplace_alerts,"0");

Dies führte dazu, dass array_spinner an Index 2 null war.
Dies verursachte die Null Pointer Exception beim Klick auf den Spinner.

Grüße
 
Hallo,
ich habe genau das gleiche Problem.

Ich habe ein Array angelegt und die Daten in einen Spinner geladen. Diese werden auch übernommen und das erste Wort wird angezeigt.
Wenn ich den Spinner anklicke stürzt meine Anwendung ab.

Ich habe das Array einmal in der String.xml erstellt und geladen und einmal in der Activity selbst. Beide Male wurde alles korrekt angezeigt. Nur beim Öffnen kam die Fehlermeldung.

Als ich versucht habe den Spinner auf die gleiche Weise in einer ganz neuen Anwendung, die nur den Spinner enthält zu laden hat alles wunderbar funktioniert. Wenn ich den Code dann aber in die eigentliche Anwednung integriere kommt wieder eine Fehlermeldung.

Hier auszüge aus meinem code:
Activity:
Code:
String[] array_spinner = new String[3];
            array_spinner[0] = "hallo";
            array_spinner[1] = "wie gehts";
            array_spinner[2] = "tschüss";
            
            Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, array_spinner);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinner1.setAdapter(adapter);
LogCat:
Code:
08-03 11:47:12.146: WARN/WindowManager(1175): Attempted to add application window with unknown token android.os.BinderProxy@45bdf7e8.  Aborting.

08-03 11:47:12.146: DEBUG/AndroidRuntime(4172): Shutting down VM

08-03 11:47:12.146: WARN/dalvikvm(4172): threadid=3: thread exiting with uncaught exception (group=0x40026160)

08-03 11:47:12.146: ERROR/AndroidRuntime(4172): Uncaught handler: thread main exiting due to uncaught exception

08-03 11:47:12.166: ERROR/AndroidRuntime(4172): android.view.WindowManager$BadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@4577aec8 is not valid; is your activity running?

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.view.ViewRoot.setView(ViewRoot.java:468)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.view.Window$LocalWindowManager.addView(Window.java:424)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.app.Dialog.show(Dialog.java:239)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.app.AlertDialog$Builder.show(AlertDialog.java:812)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.widget.Spinner.performClick(Spinner.java:283)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.view.View.onTouchEvent(View.java:4233)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.view.View.dispatchTouchEvent(View.java:3763)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:968)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:968)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:968)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:968)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.app.Activity.dispatchTouchEvent(Activity.java:2064)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:968)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:968)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.app.Activity.dispatchTouchEvent(Activity.java:2064)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:968)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:968)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:968)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:968)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:968)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:968)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.app.Activity.dispatchTouchEvent(Activity.java:2064)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.os.Handler.dispatchMessage(Handler.java:99)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.os.Looper.loop(Looper.java:123)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at android.app.ActivityThread.main(ActivityThread.java:4370)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at java.lang.reflect.Method.invokeNative(Native Method)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at java.lang.reflect.Method.invoke(Method.java:521)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)

08-03 11:47:12.166: ERROR/AndroidRuntime(4172):     at dalvik.system.NativeStart.main(Native Method)

08-03 11:47:12.176: ERROR/SemcCheckin(4172): Get crash dump level : java.io.FileNotFoundException: /data/semc-checkin/crashdump

08-03 11:47:12.176: WARN/ActivityManager(1175): Unable to start service Intent { act=com.sonyericsson.android.jcrashcatcher.action.BUGREPORT_AUTO cmp=com.sonyericsson.android.jcrashcatcher/.JCrashCatcherService (has extras) }: not found

08-03 11:47:12.196: INFO/Process(1175): Sending signal. PID: 4172 SIG: 3

08-03 11:47:12.196: INFO/dalvikvm(4172): threadid=7: reacting to signal 3

08-03 11:47:12.196: INFO/dalvikvm(4172): Wrote stack trace to '/data/anr/traces.txt'

08-03 11:47:12.236: ERROR/SemcCheckin(1602): Get Crash Level : java.io.FileNotFoundException: /data/semc-checkin/crashdump

Ich sitze jetzt schon ziemlich lange an diesem Problem und komm einfach nicht weiter.
 
Jetzt hab ich die Lösung :)

Das Problem ist, dass ich eine TabActivity für die komplette Anwendung, und ActivityGroups für die einzelnen Tabs verwende. In einer Activity wird dann der Spinner aufgerufen.

Ich habe nun statt
setContentView(R.layout.xml-Datei);
View contentView = LayoutInflater.from(getParent()).inflate(R.layout.xml-Datei, null);
setContentView(contentView);

verwendet und es funktioniert :)
 

Ähnliche Themen

SpeedySix
Antworten
13
Aufrufe
1.401
jogimuc
J
R
Antworten
1
Aufrufe
993
swa00
swa00
W
Antworten
11
Aufrufe
1.426
washpuda
W
Zurück
Oben Unten