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

findViewById liefert NULL

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von julkip, 15.04.2012.

  1. julkip, 15.04.2012 #1
    julkip

    julkip Threadstarter Neuer Benutzer

    Beiträge:
    7
    Erhaltene Danke:
    0
    Registriert seit:
    15.04.2012
    Hi,

    ich versuche mich grade in die App-Entwicklung einzuarbeiten, habe aber ein kleines Problem.

    Ich versuche grade eine Minimalapp zu schreiben, die einfach nur ein ListView mit einigen Einträgen anzeigt. Hierzu hole ich mir die ListView um sie zu befüllen mittels findViewById. Hier der komplette Code:

    Code:
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            
            ListView listView = (ListView) findViewById(R.id.listView1);
            String[] values = new String[] { "nummer 1", "nummer 2", "nummer 3", "nummer 4", "nummer 5", "nummer 6", "nummer 7", "nummer 8" };
    
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, values);
    
            listView.setAdapter(adapter);
            
            setContentView(R.layout.main);
    }
    Aber ich bekomme hier immer nur null zurückgeliefert. Ich habe testweise mal versucht mir ein anderes View geben zu lassen, das ging problemlos.

    Hier noch meine main.xml

    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    
        <ListView
            android:id="@+id/listView1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >
        </ListView>
    
    </LinearLayout>
    Danke schonmal für jede eventuelle Hilfe ;)
     
  2. swordi, 15.04.2012 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    als 1. sollte man seine probleme mal googlen

    gerade anfänger probleme sind zu hauf im web erklärt.

    zur lösung:
    schau mal für was setcontentview überhaupt gut ist. dann weißt auch warum das so nicht gehen kann.
     
  3. julkip, 15.04.2012 #3
    julkip

    julkip Threadstarter Neuer Benutzer

    Beiträge:
    7
    Erhaltene Danke:
    0
    Registriert seit:
    15.04.2012
    Ich hab nach dem Problem schon im Internet gesucht… habe nur nichts gefunden was geholfen hat.
    Und die Nullpointer Exception bekomme ich in der Zeile listview.setAdapter und nicht in der Zeile setContentView.
     
  4. swordi, 15.04.2012 #4
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    ja dann hast du nicht anständig gesucht bzw gelesen.

    ist klar, dass du beim setadapter ein nullpointer bekommst

    setcontentview ist dafür verantwortlich. mehr hinweise kann ich dir nicht geben.


    wenn du weißt, was setcontentview macht, weißt du auch warum hier die listview null ist
     
  5. julkip, 15.04.2012 #5
    julkip

    julkip Threadstarter Neuer Benutzer

    Beiträge:
    7
    Erhaltene Danke:
    0
    Registriert seit:
    15.04.2012
    Naja, du hättest mir sagen können wo ich am besten nachgucke.

    Ich hatte es bisher so verstanden, dass setContentView die Oberfläche anzeigt.

    Und ich dachte mir, dass ich die Oberfläche sehen will in der ich die ListView plaziert habe, deshalb sage ich meinem Programm, dass ich die sehen will. Da ich aber in der ListView natürlich auch etwas angezeigt haben will muss ich die ja erstmal befüllen, am besten bevor ich sie anzeige.

    Anscheinend macht setContentView aber etwas anderes, sowas in die Richtung alle Views zu initialisieren oder sowas in der Art, ich habe bisher leider noch keine Vernünftige erklärung gefunden. Nur das hier:
    view - Android setContentView operation - Stack Overflow

    Also, wenn du noch eine richtige erklärung für mich hast, würde ich mich über nen Link freuen.

    Ich hab jetzt das setContentView vor das findViewById gesetzt, und nu gehts
     
  6. swordi, 15.04.2012 #6
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    naja setcontentview setzt, wie der name schon sagt, die content views

    du versuchst dann über findviewbyid views von dieser content view zu bekommen.

    wenn du aber noch keine contentview gesetzt hast, wirst keine view zu der id zurück bekommen.

    wenn du die liste erst anzeigen willst, wenn etwas geladen ist, dann musst mit setVisibility arbeiten.
     
  7. keinbrain, 15.04.2012 #7
    keinbrain

    keinbrain Fortgeschrittenes Mitglied

    Beiträge:
    316
    Erhaltene Danke:
    21
    Registriert seit:
    07.03.2012
    sry swordi das ich hier deine lernstrategie zerstöre :p , aber grade anfänger (bin ja auch noch einer, ich weiß wie das ist ^^ ) neigen dazu für einfachste Dinge die kompliziertesten Lösungsansätze zu finden.

    setContentView verweist auf die Layout - XML File, in der sich in deinem Fall die ListView befindet. Und dann , wie swordi schon gesagt hat, die ListView über die ID und findViewById aufrufen .
     
  8. swordi, 15.04.2012 #8
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    lol meine lernstrategie zerstörst nicht.

    ich muss ja niemandem was beibringen ( schon gar nicht unentgeltlich :) ). ich wollte nur helfen. nur nutzt es niemandem was, wenn hier 5 zeilen code gepostet und diese stur kopiert werden. ist täglich das gleiche hier im forum.

    ich helfe gerne mit stichwörtern aus. diese führen immer in die richtige richtung, wenn jemand die lösung finden will. grade am anfang braucht man halt mal mehr ausdauer
     
  9. keinbrain, 15.04.2012 #9
    keinbrain

    keinbrain Fortgeschrittenes Mitglied

    Beiträge:
    316
    Erhaltene Danke:
    21
    Registriert seit:
    07.03.2012
    Nur neigen anfänger leider oft dazu wenn etwas nicht klappt android als zu schwer abzustempeln, aber beim 'nur-code-posten-und-abkopieren' bin ich auch deiner meinung . Dafür gibts ja dann auch stackoverflow ^^
     
  10. swordi, 15.04.2012 #10
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    tja wer nicht bereit ist sich mal ein paar wochen einzulesen, der wird sowieso nicht weit kommen. da helfen dann ein paar schnipsel auch nicht weiter
     
  11. keinbrain, 15.04.2012 #11
    keinbrain

    keinbrain Fortgeschrittenes Mitglied

    Beiträge:
    316
    Erhaltene Danke:
    21
    Registriert seit:
    07.03.2012
    so true ...

    @julkip schau dir mal das buch 'Android apps entwicklung für dummies' an, da lernst du ganz gut die grundlagen . Java kentnisse werden allerdings vorrausgesetzt, die kannst du dir ganz gut, sofern nicht vorhanden, durch 'Java 7' von pearson aneignen. Letzteres buch findest du auch in vielen Stadtbibliotheken .
     

Diese Seite empfehlen