2016-04-24 10 views
1

Ich versuche, eine Quiz-App zu entwickeln, wo ich manuell ein Array von Fragen und Antworten schreibe und dann diese verwenden, um die Textwerte der Radio-Taste und der Textansicht einzustellen. Aber dann, als ich versuche, es zu starten und damit zu spielen, war es beim ersten Satz der Frage in Ordnung, dann wurde die richtige Antwort falsch und umgekehrt. Screenshots unten.Falsch, wenn die Antwort korrekt ist Android Quiz app

Die richtige, wenn ich die richtige gedrückt habe.

enter image description here

Die falsche ein, aber ich habe die richtige gedrückt (Sie kennen die Antwort).

enter image description here

Es scheint mir, dass der erste Satz von Werten der Frage nicht bewegt wurde. Ich habe alles versucht, was mir einfällt, aber kein Glück. Ich sehe, was in meinem Logcat passiert, als ich versuchte, den aktuellen Text auszudrucken. Hier ist ein Ausschnitt aus meinem Logcat.

04-24 01:56:10.880 4093-4093/com.example.muhammad.exquizme D/answer: Google 
04-24 01:56:10.880 4093-4093/com.example.muhammad.exquizme D/correctAnswer: Google 
04-24 01:56:10.885 4093-4093/com.example.muhammad.exquizme D/Is it correct?: Correct 
04-24 01:56:10.894 4093-4147/com.example.muhammad.exquizme W/OpenGLRenderer: Fail to change FontRenderer cache size, it already initialized 
04-24 01:56:32.322 4093-4093/com.example.muhammad.exquizme D/answer: Google 
04-24 01:56:32.322 4093-4093/com.example.muhammad.exquizme D/correctAnswer: An algorithm 
04-24 01:56:32.326 4093-4093/com.example.muhammad.exquizme D/Is it correct?: Incorrect 

Hier ist der Code für diesen Teil.

QuizQuestion[] questionArray; //global variable 
    int randomIndex;//global variable 

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

     qIndexView = (TextView) findViewById(R.id.currentNumber); 
     questionTextView = (TextView) findViewById(R.id.questionTextView); 
     choiceBtnA = (RadioButton) findViewById(R.id.choiceA); 
     choiceBtnB = (RadioButton) findViewById(R.id.choiceB); 
     choiceBtnC = (RadioButton) findViewById(R.id.choiceC); 
     choiceBtnD = (RadioButton) findViewById(R.id.choiceD); 
     questionArray = new QuizQuestion[5]; 

     displayQuestion(); 


     final String a = choiceBtnA.getText().toString(); 
     final String b = choiceBtnB.getText().toString(); 
     final String c = choiceBtnC.getText().toString(); 
     final String d = choiceBtnD.getText().toString(); 

     choiceBtnA.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       checkAnswers(a); 
       final Handler handler = new Handler(); 
       handler.postDelayed(new Runnable() { 
        @Override 
        public void run() { 
         displayQuestion(); 
        } 
       }, 2000); 

       //displayQuestion(); 
      } 
     }); 

     choiceBtnB.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       checkAnswers(b); 
       final Handler handler = new Handler(); 
       handler.postDelayed(new Runnable() { 
        @Override 
        public void run() { 
         displayQuestion(); 
        } 
       }, 2000); 
      } 
     }); 

     choiceBtnC.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       checkAnswers(c); 
       final Handler handler = new Handler(); 
       handler.postDelayed(new Runnable() { 
        @Override 
        public void run() { 
         displayQuestion(); 
        } 
       }, 2000); 
      } 
     }); 

     choiceBtnD.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       checkAnswers(d); 
       final Handler handler = new Handler(); 
       handler.postDelayed(new Runnable() { 
        @Override 
        public void run() { 
         displayQuestion(); 
        } 
       }, 2000); 
      } 
     }); 
    } 

//This is called every pressed 
public void displayQuestion() { 

     //Create Question list 
     String theQuestion = "Android mobile operating system was released on 23rd September 2008 developed by who?"; 
     String[] choices = new String[]{"Google", "IBM", "Intel", "Oracle"}; 
     questionArray[0] = new QuizQuestion(theQuestion, choices, choices[0], "Computing History"); 

     theQuestion = "Who invented the programming language called 'Java'?"; 
     choices = new String[]{"James Gosling", "Steve Jobs", "Bill Gates", "Elon Musk"}; 
     questionArray[1] = new QuizQuestion(theQuestion, choices, choices[0], "Computing History"); 

     theQuestion = "Which of the following languages is more suited to a structured program?"; 
     choices = new String[]{"FORTRAN", "BASIC", "PASCAL", "None of the above"}; 
     questionArray[2] = new QuizQuestion(theQuestion, choices, choices[3], "Computer Fundamentals"); 

     theQuestion = "The brain of any computer system is"; 
     choices = new String[]{"Memory", "ALU", "CPU", "Control unit"}; 
     questionArray[3] = new QuizQuestion(theQuestion, choices, choices[2], "Computer Fundamentals"); 

     theQuestion = "The step-by-step instructions that solve a problem are called _____."; 
     choices = new String[]{"An algorithm", "A list", "A plan", "A sequential structure"}; 
     questionArray[4] = new QuizQuestion(theQuestion, choices, choices[0], "System Analysis and Design"); 

     randomIndex = new Random().nextInt(questionArray.length); 

     questionTextView.setText(questionArray[randomIndex].question); 
     choiceBtnA.setText(questionArray[randomIndex].choices[0]); 
     choiceBtnB.setText(questionArray[randomIndex].choices[1]); 
     choiceBtnC.setText(questionArray[randomIndex].choices[2]); 
     choiceBtnD.setText(questionArray[randomIndex].choices[3]); 

    } 

//checks answer when clicked 
public boolean checkAnswers(String answer) { 
     Log.d("answer", answer); 
     String correctAnswer = questionArray[randomIndex].answer; 
     Log.d("correctAnswer", correctAnswer); 
     if (answer.equals(correctAnswer)) { 
      Toast.makeText(PlayQuizActivity.this, "Correct", Toast.LENGTH_SHORT).show(); 
      Log.d("Is it correct?", "Correct"); 
      return true; 
     } else { 
      Toast.makeText(PlayQuizActivity.this, "Incorrect", Toast.LENGTH_SHORT).show(); 
      Log.d("Is it correct?", "Incorrect"); 
     } 

     return false; 
} 

Das ist alles, was ich im Moment habe. Lassen Sie mich wissen, wenn Sie Klärung benötigen, denn mein Englisch ist nicht so gut. Danke im Voraus.

+1

Bitte zeigen Sie, wie und wo Sie die 'String' in' checkAnswers() 'übergeben bekommen. –

+0

@MikeM Ich habe es für Sie aktualisiert. Schau es dir jetzt an. Vielen Dank. –

+1

Sie müssen den '' Button'' aktuellen Text erhalten, wenn Sie klicken. Ändern Sie die Aufrufe von 'checkAnswers()' in den 'onClick()' Methoden zu 'checkAnswers (choiceBtnA.getText(). ToString());', 'checkAnswers (choiceBtnB.getText(). ToString());', usw. –

Antwort

1

Nachdem Sie die erste Frage angezeigt haben, speichern Sie den ursprünglichen Text der Button s als Antworten, aber sie werden nicht aktualisiert, wenn Sie zur nächsten Frage übergehen.

Sie müssen den aktuellen Text der Button s erhalten, wenn Sie klicken. Ändern Sie die Anrufe zu checkAnswers() in den onClick() Methoden checkAnswers(choiceBtnA.getText().toString());, checkAnswers(choiceBtnB.getText().toString()); usw.

Alternativ Sie die Antwort String von questionArray stattdessen bekommen konnte. Zum Beispiel checkAnswers(questionArray[randomIndex].choices[0]);, checkAnswers(questionArray[randomIndex].choices[1]); usw.

Darüber hinaus könnten Sie den Code ein wenig, indem sie ein int vorbei repräsentiert die Button ‚s Index in checkAnswers() stattdessen trimmen und nur die ausgewählte Antwort greifen dort.

choiceBtnA.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     checkAnswers(0); 
     ... 
    } 
}); 

... 

public boolean checkAnswers(int index) { 
    String answer = questionArray[randomIndex].choices[index]; 
    String correctAnswer = questionArray[randomIndex].answer; 
    ... 
} 
+1

Super ... Danke .... –

Verwandte Themen