findViewById liefert NULL

J

julkip

Neues Mitglied
0
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 ;)
 
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.
 
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.
 
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
 
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
 
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.
 
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 .
 
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
 
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 ^^
 
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
 
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 .
 

Ähnliche Themen

L
  • LHomme
Antworten
1
Aufrufe
1.166
jogimuc
J
W
Antworten
11
Aufrufe
1.416
washpuda
W
R
Antworten
1
Aufrufe
993
swa00
swa00
Zurück
Oben Unten