Bekomme NullPointerexception bei versuch daten in TextView zu schreiben!

  • Antworten:11
  • Bentwortet
L3322
  • Forum-Beiträge: 467

26.09.2010, 12:22:24 via Website

1public void fillNormalScore() {
2 TextView n = (TextView)findViewById(R.id.normals);
3
4 myDB = this.openOrCreateDatabase("Scores", MODE_PRIVATE, null);
5 Cursor c = myDB.rawQuery("SELECT * FROM Scores WHERE _id=1", null);
6 int Name = c.getColumnIndex("name");
7 int Score = c.getColumnIndex("score");
8 startManagingCursor(c);
9 c.moveToFirst();
10
11 if (c != null) {
12 Log.d(MY_DATABASE_TABLE, "ist nicht null");
13 if (c.isFirst()) {
14 Log.d(MY_DATABASE_TABLE,"Das funktioniert auch!!!");
15 String name = c.getString(Name);
16 String score = c.getString(Score);
17 //Hier bekomm ich den error
18 n.setText("Normal: " + name + " " + score);
19 //------------------
20 }
21 }

Bei Zeile 18 bekomme ich eine NullPointerexception!

konnte nichts falsches finden!

Danke

lg L3322

"Hard work beats talent, when talent fails to work hard"

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

26.09.2010, 13:46:25 via Website

n ist null.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
L3322
  • Forum-Beiträge: 467

26.09.2010, 13:53:47 via Website

sorry aber das bringt mich jetzt nicht sonderlich viel weiter!:P

"Hard work beats talent, when talent fails to work hard"

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

26.09.2010, 14:18:26 via Website

Bei einer NullPointerException sollte man also schauen wo das Objekt erzeugt wurde auf die man etwa anwendet:

1TextView n = (TextView)findViewById(R.id.normals);

Ich würde das überprüfen! Er scheint den View nicht zu finden!

n.setText("Normal: " + name + " " + score);

Da du hier eine String concatenation (Aneinanderreihen) machst und die String Klasse so schlau ist das selbst wenn 'name' null ist wird dies als "null"-String angefügt wird kann nur das TextView n null sein!

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Gelöschter Account
  • Forum-Beiträge: 281

26.09.2010, 14:30:59 via App

Wie wäre es denn mit der Benutzung eines Debuggers? Mal eben ein paar Watchers auf die verwendeten Variablen und voila ...

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

26.09.2010, 14:41:09 via Website

Das Problem ist das er überfordert ist, mit noch mehr Tools und Features wird er nicht verstehen was eine NullPointerException wirklich ist.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
L3322
  • Forum-Beiträge: 467

26.09.2010, 14:49:41 via Website

Okay es scheint die Textview wirklich nicht zu finden denn selbst bei n.setText("hi") findet er nichts!

kann es damit vllt zusammenhängen?
1@Override
2 public void onCreate (Bundle savedInstanceState) {
3 super.onCreate(savedInstanceState);
4fillNormalScore();
Ich rufe gleich beim onCreate die Methode fillNormalScore() auf!

weiß jetzt wer wo das Problem wirklich liegt?

EDIT: danke bisher fürs weiterhelfen!

— geändert am 26.09.2010, 14:52:12

"Hard work beats talent, when talent fails to work hard"

Antworten
Gelöschter Account
  • Forum-Beiträge: 281

26.09.2010, 14:51:57 via Website

Selbst wenn das mit der Überforderung so sein sollte, dann hilft Tool-Vermeidung wahrscheinlich auch nicht. Und öffentliche Meinungsäußerungen über seine Fähigkeiten definitv gar nicht. Also L3322, weisst du was eine NullPointerException ist?

Antworten
L3322
  • Forum-Beiträge: 467

26.09.2010, 14:59:57 via Website

das ist doch wenn eine z.B methode eine variable aufrufen will die variable aber nicht wirklich existiert bzw. null ist?!:cold:

verbesserungen erwünscht.

"Hard work beats talent, when talent fails to work hard"

Antworten
Gelöschter Account
  • Forum-Beiträge: 281

26.09.2010, 15:17:28 via App

Im Prinzip richtig. Am häufigsten treten NullPointerExceptions auf, wenn du eine Methode eines Objekts aufrufen willst, obwohl es gar nicht erzeugt wurde. Und genau danach kannst du sehr leicht per Debugger suchen, weil du deinen Code schrittweise durchläufst und vor und nach jedem Schritt den Inhalt aller Variablen und die Objektzustände einsehen kannst.

Antworten
L3322
  • Forum-Beiträge: 467

26.09.2010, 15:59:35 via Website

Ich habs geschafft!
anstatt alles in eine neue methode zu schreiben habe ich alles under die onCreate methode geschrieben!!
jetzt geht es!!

Hat da jemand eine erklärung??

"Hard work beats talent, when talent fails to work hard"

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

26.09.2010, 19:46:46 via Website

Ich rufe gleich beim onCreate die Methode fillNormalScore() auf!

weiß jetzt wer wo das Problem wirklich liegt?

Genau daran, ist doch offensichtlich.

Wie glaubst du kann dein findViewById() etwas finden, bevor es via setContentView() zugeordnet wurde?
Raten, was du vielleicht meinen könntest?

Mit dem neuen Account sind deine Anfragen auch nicht besser geworden...

Antworten