Fehler, App lässt sich nicht starten. Was mache ich falsch?

  • Antworten:6
  • Bentwortet
Lukas G.
  • Forum-Beiträge: 19

19.10.2014, 18:08:48 via Website

Hallo liebe Communiy,
ich habe mich mal am Coden versucht...
Dabei wollte ich eine Int haben die sich beim klicken erhöht, bei 100 Klicks soll ein Toast erscheinen,
Dich leider schließt sich die App beim starten immer.
Könntet ihr mir evtl. sagen was ich falsch gemacht habe, oder was ich verändern sollte?
Danke im vorraus!

Hier der Code:

public class MainActivity extends ActionBarActivity {
TextView anzahl = (TextView)findViewById(R.id.textView1);

int klicks;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}
public void Tamagoklick(View view){
    if(klicks == 100){
        Toast.makeText(getApplicationContext(), "Glückwunsch! Du hast 100 Klicks!", Toast.LENGTH_LONG).show();
        klicks = 0;
    }else{
        klicks++;
        anzahl.setText(String.valueOf(klicks));
    }
}

public void Buttonklick(View view){
    klicks = 0;
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

— geändert am 19.10.2014, 18:52:30

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.10.2014, 18:12:22 via Website

Hallo Lukas,

Herzlich willkommen bei uns im Forum :)
Bitte beachte, dass Threads mit nicht aussagekräftigem Titel bei uns üblicherweise den Regeln entsprechend entfernt werden. Ich bitte dich daher, deinen Threadtitel bei deinem nächsten Besuch, spätestens jedoch innerhalb der nächsten 24 Stunden noch etwas aussagekräftiger zu gestalten (Hierfür einfach unter deinem ersten Beitrag auf 'bearbeiten' klicken, dann kannst du oben noch mal den Titel anpassen)
Danke :)

---

Zu deinem Problem:
Du darfst deine TextView nicht vor der onCreate Methode initiealisieren, daher entsteht der Fehler.
Wenn du nur die Variable Definierst und erst in der OnCrate Methode nach dem setContentView() initialisierst bzw. auf dem Layout suchst, sollte es Funktionieren,.

LG Pascal

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Lukas G.
  • Forum-Beiträge: 19

19.10.2014, 18:59:11 via Website

Vielen Dank für deine Antwort.
Ich habe es dementsprechend mal so probiert:

public class MainActivity extends ActionBarActivity {

int klicks;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

TextView anzahl = (TextView)findViewById(R.id.textView1);
public void Tamagoklick(View view){
    if(klicks == 100){
        Toast.makeText(getApplicationContext(), "Glückwunsch! Du hast 100 Klicks!", Toast.LENGTH_LONG).show();
        klicks = 0;
    }else{
        klicks++;
        anzahl.setText(String.valueOf(klicks));
    }
}

public void Buttonklick(View view){
    klicks = 0;
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

Doch leider taucht der Fehler immer noch auf, vielleicht stimmt noch irgend etwas nicht?
LG Lukas

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.10.2014, 19:02:14 via Website

Na ja fällt dir an den Klammern an der onCreate was auf?

@Override

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
TextView anzahl = (TextView)findViewById(R.id.textView1);

das initialisieren umm in die onCreate mit rein so in der Art:

    int klicks;
TextView anzahl;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

anzahl = (TextView)findViewById(R.id.textView1);
}

public void Tamagoklick(View view){
    if(klicks == 100){
        Toast.makeText(getApplicationContext(), "Glückwunsch! Du hast 100 Klicks!", Toast.LENGTH_LONG).show();
        klicks = 0;
    }else{
        klicks++;
        anzahl.setText(String.valueOf(klicks));
    }
}

public void Buttonklick(View view){
    klicks = 0;
}

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Lukas G.
  • Forum-Beiträge: 19

19.10.2014, 19:13:00 via Website

Wenn ich dies so mache wie du mir eben beschrieben hast, wird mir hier wieder dieser Fehler hier ausgegeben:
image

Antworten
Lukas G.
  • Forum-Beiträge: 19

19.10.2014, 19:25:09 via Website

Okay, habe den Fehler selber gefunden.
Mann bin ich doof, ich musste nur die Deklaration des Textviews mit in den Tamagoklick machen =)
Danke an alle die mir geholfen haben!
LG Luxh

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.10.2014, 19:35:07 via Website

Gut dass du es selber herausgefunden hast, :)
aber wenn man es komplett richtig machen will, dann definiert man die TextView als Klassenvariable, setzt sie dann aus dem Layout auf die Var.
Dann hast du ein ähnliches prinzip.

PS: Bitte setzte deinen Thread noch auf Beantwortet, indem du im Browser über deinem ersten Post auf Mehr->"Auf beantwortet setzten" klickst.

LG Pascal

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten