1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

mein Spinner wirft NullPointerException... need help

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von rufux, 21.03.2011.

  1. rufux, 21.03.2011 #1
    rufux

    rufux Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    84
    Erhaltene Danke:
    5
    Registriert seit:
    11.11.2010
    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
     
  2. ko5tik, 21.03.2011 #2
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Da unsere Hellseher feierabend haben, wäre es nett wenn du den Stacktrace posten würdest....
     
  3. rufux, 21.03.2011 #3
    rufux

    rufux Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    84
    Erhaltene Danke:
    5
    Registriert seit:
    11.11.2010
    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)
    
    
     
  4. ko5tik, 21.03.2011 #4
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Offensichtlich war es nicht in der Lage einen View herzustellen - und eine NPE bekommen.
    Gibt es entsprechenden Layout-XML überhaupt?
     
  5. Neeldarax, 21.03.2011 #5
    Neeldarax

    Neeldarax Erfahrener Benutzer

    Beiträge:
    170
    Erhaltene Danke:
    31
    Registriert seit:
    07.12.2010
    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
     
    rufux bedankt sich.
  6. rufux, 21.03.2011 #6
    rufux

    rufux Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    84
    Erhaltene Danke:
    5
    Registriert seit:
    11.11.2010
    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: 21.03.2011
  7. tennislehrer, 07.04.2011 #7
    tennislehrer

    tennislehrer Neuer Benutzer

    Beiträge:
    1
    Erhaltene Danke:
    0
    Registriert seit:
    07.04.2011
    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
     
  8. SabR, 03.08.2011 #8
    SabR

    SabR Neuer Benutzer

    Beiträge:
    2
    Erhaltene Danke:
    0
    Registriert seit:
    03.08.2011
    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.
     
  9. SabR, 03.08.2011 #9
    SabR

    SabR Neuer Benutzer

    Beiträge:
    2
    Erhaltene Danke:
    0
    Registriert seit:
    03.08.2011
    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 :)
     

Diese Seite empfehlen