Android Tabelle dynamisch erzeugen

  • Themenstarter Themenstarter Gelöschtes Mitglied 34244
  • Beginndatum Beginndatum
G

Gelöschtes Mitglied 34244

Gast
Hallo,
ich arbeite gerade daran eine Tabelle dynamisch zu generieren. Ohne XML-File und durch reine Java-Befehle ist das auch kein Problem gewesen. Aber ich möchte nicht wegen einer Tabelle das gesamte Seitenlayout mit Java erstellen. Denn sobald ich versuche eine Mischung aus XML und Java zu programmieren ergeben sich Fehlermeldungen, die mir nicht weiterhelfen. Ich poste mal den Quelltext und hoffe, dass ihr mir weiterhelfen könnt. Bei dem Quelltext versuche zunächst mal nur eine Tabelle mit unterschiedlichen Hintergrundfarben zu generieren.

Die Fehlermeldung lautet: NullPointerException (in Zeile ll.addView(tbl))


test.xml:

[XML]<?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:id="@+id/test" />

[/XML]

Test.java:
Java:
...
...
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);

LinearLayout ll = (LinearLayout) findViewById(R.id.test);

TableLayout tbl = new TableLayout(this);

for(int i=0;i<10;i++){

TableRow eins = new TableRow(this);
int zufall = (int)-(Math.random()*16777216);
eins.setBackgroundColor(zufall);
TextView tv = new TextView(this);
tv.setText("Reihe "+i);
eins.addView(tv);
tbl.addView(eins); // Zeile der Fehlermeldung

}

ll.addView(tbl);
this.setContentView(R.id.test);

}
 
Das sieht soweit alles korrekt aus. Check einmal ob du R aus dem richtigen Package importiert hast und wenn's das nicht war, poste die ganze Exception.
 
Ah, sorry, so wie es oben außerhalb des Quelltextes steht ist es korrekt, ich habs aber jetzt korrigiert. Zu der Fehlermeldung gibts eigentlich nicht mehr zu posten. Da steht halt nur:
Caused by: Java.lang.NullPointerException
at [package].onCreate [Zeile]

Oder brauchst du noch andere Informationen?


Nachtrag: Ich kann den ersten Beitrag nicht mehr korrigieren, ist das normal?! Da gibts keinen Ändernbutton.
 
Zuletzt bearbeitet von einem Moderator:
Moin,

nein, ändern solltest Du eigene Beträge eigentlich immer können .....

Dann würde ich mal drauf tippen, dass "ll" null ist.
Prüfe es entweder in Debugger oder schau mal, ob Du so drüber weglaufen kannst:
Java:
if( ll != null )
{
    ll.addView(tbl);
}

Gruß
Klaus
 
Ah, jetzt seh ich den Fehler. Du setzt die Content-View viel zu spät. Wie willst du den etwas in der ContentView finden (findViewById) wenn du sie erst nach der Suche setzt?

findViewById returniert null wenn es die gegebene ID nicht findet.

nein, ändern solltest Du eigene Beträge eigentlich immer können .....
Das war einmal. Seit ein paar Wochen hat man nur noch 15min Zeit, danach geht's nicht mehr. Ziemlich ärgerlich wenn man dann später einmal seinen eigenen, mit Fehler gespickten, Post sieht ...
 
Ja! Das war das Problem. Und außerdem war setContentView noch auf die falsche Resource verwiesen worden. Ich hatte R.id.test geschrieben, aber eigentlich hätte es R.layout.test heißen müssen. Vielen Dank! :toll:
 

Zurück
Oben