Android Quiz App bei falscher Frage soll sie angezeigt werden.

  • Antworten:12
Sambai
  • Forum-Beiträge: 34

23.10.2016, 14:49:37 via Website

Hey, ich bin gerade dabei meine erste App zu entwickeln und dies ist eine Quiz App. Ich habe ein TextView wo die frage drinnen steht und dann einen EditText wo man seine Antwort eingeben kann und dann halt einen Weiter Button.
Auf dem Button ist die Antwortabfrage Programmiert mit:
if (question1.getText().toString(),equals("Antwort"))

der Button hat einen OnClickListener.
Wenn die frage halt falsch ist wird momentan nichts angezeigt ich würde aber gerne das die antwort die falsch ist angezeigt wird. Bei manchen fragen habe ich auch mehrere EditText dort soll das dann auch angezeigt werden.
Ich hoffe ihr könnt mir helfen.
Danke schon mal im Vorraus.

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

23.10.2016, 15:47:59 via App

Hallo Sambai!
Du kannst die If mit einer Else erweitern. Dann kannst du auf falsche Antworten eingehen.
Zudem würde ich aber einen generischen Ansatz nehmen da du das ja dann für beliebigen Fragen machen kannst.

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

Antworten
Sambai
  • Forum-Beiträge: 34

23.10.2016, 15:54:32 via Website

nur wie gehe ich auf die falschen fragen ein? Ich muss ja irgendwie sagen wenn equals falsch ist soll die schrift farbe rot werden.
Ich habe die app nun schon etwas programmiert und habe viele fragen so gemacht. Lohnt es sich da denn noch einen generischen Ansatz zu benutzen?

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

23.10.2016, 16:06:03 via App

Eigentich schon. Dann bist du Flexibel. Finde ich nicht sinvoll für jede Frage 5 Zeilen Code zu schreiben. Wenn es in 2 Jahren dann mal 300 Fragen sind hast du ein Problem.

Versuch mal den Ansatz:

If(meinTextEdit.getText().equals(...))
{
\...
}
else
{
meineAntwortText.setBackgroundColor(Color.Red);
Toas.makeText(context,"Falsche Antwort", Toast.LenghtLong).show();
}

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

Sambai

Antworten
Sambai
  • Forum-Beiträge: 34

23.10.2016, 16:11:18 via Website

Danke das werde ich mal versuchen.
Nur weiß ich leider nicht wie ich diesen generischen Ansatz benutze :D Ist das so gemeint das ich eine eigene Java class mache und dort alle fragen rein schreiben und dann von der einen class auf die Fragen class zugreife? oder wie ist das gemeint

Antworten
Sambai
  • Forum-Beiträge: 34

23.10.2016, 16:32:16 via Website

Also ich habe das mit dem else versucht (erstmal nur mit dem Toast weil ich nicht wusste wie ich die farbe deffinier) und wenn ich jetzt auf weiter klicke (man muss auf weiter klicken das man zur nächsten frage kommt) dann komme ich mit der falschen antwort weiter und es erscheint die Nachricht auf dem nächsten screen

button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (question1.getText().toString().equals("Braun"));
else {
Toast.makeText(context,"Falsche Antwort", Toast.LENGTH_LONG).show();
}
Intent i1 = new Intent (Text1.this, Text2.class);
startActivity(i1);`

— geändert am 23.10.2016, 16:32:44

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

23.10.2016, 16:38:49 via App

Das geht so nicht.
Du musst das Starten der Activity in den if Block schreiben.
Sonst geht das nicht.

Und generischer Ansatz:
Du hast eine DB da steht die Frage und die Antwort bzw. Antwortmöglichkeiten drin.
Dann kannst du immer eine Frage lesen und diese dann anzeigen und verarbeiten

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

Antworten
Sambai
  • Forum-Beiträge: 34

23.10.2016, 16:43:39 via Website

Achso jetzt habe ich das verstanden :D
Aber wenn ich jetzt das else unten stehen habe dann ist es rot unterstrichen

Gut, so in etwa wie ich mir das dachte. Dafür müsste ich mir eine DB porgrammieren damit habe ich mich nun noch nicht so auseinander gesetzt.

— geändert am 23.10.2016, 16:44:55

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

23.10.2016, 16:50:30 via App

Also eine DB musst du nicht selber machen:
Das gibt es schon du musst die Komponenten nur nutzen

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

Antworten
Sambai
  • Forum-Beiträge: 34

23.10.2016, 18:39:16 via Website

Ok, und warum kann es sein das das else rot unterschrischen ist? Ich habe das nun so gemacht wie beschrieben es wird aber nichts angegeben wenn ich alt+Enter drücke

btn1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
             if (question1.getText().toString().equals("Braun"));
            {Intent i1 = new Intent (Text1.this, Text2.class);
                startActivity(i1);
            }
            else {
                Toast.makeText(context,"Falsche Antwort", Toast.LENGTH_LONG).show();
            }

        }

    });

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

23.10.2016, 19:24:50 via App

Weil du nach dem if(..) einSemikolon gemacht hast. Vor einer Geschweiften Klammer für die If Anweisung darf kein Semikolon kommen sonst ist die if dann zu ende

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

Sambai

Antworten
Sambai
  • Forum-Beiträge: 34

23.10.2016, 19:46:41 via Website

Vielen vielen dank. Die letzte frage noch wie füge ich die Farbe dort in der Java class ein? Ich weiß nur wie man das in der activity macht. :)

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

23.10.2016, 22:24:15 via Website

Wie sonst auch:
myTextViewObject.setBackgroundColor(Color.RED);
oder
myTextViewObject.setTextColor(Color.RED);

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

Sambai

Antworten