2017-02-03 2 views
-3

Ich mache eine Quizz App für Android mit 10 Fragen, alle mit 4 Radio Buttons, und eine Taste am Ende, um die Punktzahl anzuzeigen. Das Problem ist, wenn ich die richtige Antwort wähle, gibt es 5 Punkte, aber wenn ich einen anderen Radioknopf überprüfe, bleiben die Punkte 5 und wenn ich wieder drücke, summiert es sich 5. Was ist der beste Weg, dies zu kodieren? HierMaking Quiz App in Android mit Optionsfeldern

ist der Code:

package com.example.android.quizproject; 

import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.RadioButton; 
import android.widget.TextView; 

public class MainActivity extends AppCompatActivity { 

int points = 0; 

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

public void firstRadioButtons (View view){ 
    boolean checked = ((RadioButton) view).isChecked(); 
    switch (view.getId()) { 
     case R.id.questionOneA: 
      if (checked) 
       points += 0; 
       break; 
     case R.id.questionOneB: 
      if (checked) 
       points += 0; 
       break; 
     case R.id.questionOneC: 
      if (checked) 
       points += 5; 
       break; 
     case R.id.questionOneD: 
      if (checked) 
       points += 0; 
       break; 
    } 

} 

public void showScore (View view) { 
    TextView scoreTextView = (TextView) findViewById(R.id.score); 
    scoreTextView.setText(" " + points); 
} 

}

+0

Die Art, wie Sie die Frage formuliert haben, ist etwas verwirrend. Der angezeigte Code fügt 5 Punkte hinzu, wenn auf die richtige Option (C) geklickt wird, und macht nichts, wenn auf eine andere Option geklickt wird. Ist das nicht das beabsichtigte Verhalten? Oder fragen Sie nur nach dem besten Weg, dies zu implementieren? – RedBassett

+0

Sorry, mein Englisch ist das Schlimmste! Das Problem ist, wenn ich das richtige auswähle addiert es 5 Punkte, wenn ich zu A, B oder D wechsle es summiert 0 aber subtrahiert niemals die 5 Punkte wenn C gewählt wird, und Wenn ich C wieder wähle fügt es Punkte hinzu, insgesamt 10 Punkte. –

+0

Keine Sorgen auf Englisch. Du machst es gut, um so weit zu kommen! Wie sind die Fragen angelegt? Sind alle zehn Fragen auf einer Seite oder gibt es einen "nächsten" Knopf, um zwischen den Fragen zu wechseln? Wenn es eine Schaltfläche gibt, addieren/subtrahieren Sie keine Punkte, bis diese ausgewählt ist. Wenn sie sich auf einer Seite befinden, überprüfen Sie alle Fragen, wenn die Bewertungsschaltfläche am Ende gedrückt wird, nicht wenn eine Option aktiviert ist. – RedBassett

Antwort

0

Sie Verwendung eines Zählers vvariable machen kann, der überprüft, ob die Frage previousy beantwortet wurde oder nicht. Ändern Sie einen Teil Ihres Codes zu diesem

public void firstRadioButtons (View view){ 
    boolean checked = ((RadioButton) view).isChecked(); 
    int count=0; 
    switch (view.getId()) { 
     case R.id.questionOneA: 
      if (checked) 
       { 
      if(count!=0){ 
       points-=5; 
       count=0; 
       } 
       } 
       break; 
     case R.id.questionOneB: 
      if (checked) 
       { 
      if(count!=0){ 
       points-=5; 
       count=0; 
       } 
       } 
       break; 
     case R.id.questionOneC: 
      if (checked){ 
       points += 5; 
       count+=1;} 
       break; 
     case R.id.questionOneD: 
      if (checked) 
       { 
      if(count!=0){ 
       points-=5; 
       count=0; 
       } 
       } 
       break; 
    } 

} 
+0

Es wäre einfacher, einen booleschen Wert zum Hinzufügen/Subtrahieren zu speichern, dann tun Sie alles, was am Ende der Methode steht. –

+0

Es ist eigentlich eine gute Idee, danke für Ihren Vorschlag, ich bin wirklich aprecciated. –

+0

Gern geschehen :) –

0

Eigentlich, wie Sie es beschrieben haben, ist es gesund. Wenn Sie einmal auf die richtige Antwort klicken, wird sie auf 5 gesetzt, aber wenn Sie eine andere drücken, wird 0 hinzugefügt.

Im Allgemeinen wird es 5 ausdrucken, da Sie die Antwort einmal richtig beantwortet haben, und die anderen Fragen sind auf 0 gesetzt. Es gibt wirklich nichts zu beheben, es ist ein gesunder Menschenverstand, dass Ihre Variable nicht anders lesen würde 5. Genau wie Abhriya sagte, könnten Sie einen Zählerinkrementwert wie in (ihrem) Beispiel hinzufügen.

Verwandte Themen