Ich habe ein Problem mit ClearChecked() von RadioGroup. Ich zeige dem Benutzer eine Multiple-Choice-Frage an und nachdem der Benutzer eine Antwort ausgewählt hat, überprüfe ich die Antwort, gebe ihm ein Feedback und gehe dann zur nächsten Frage über. Bei der nächsten Frage gehe ich zur RadioGroup.Fehler in Android ClearCheck() für RadioGroup?
Kann mir jemand erklären, warum die onCheckedChanged-Methode dreimal aufgerufen wird? Sobald die Änderung tatsächlich eintritt (mit dem Benutzer ändert sich), einmal wenn ich check (mit -1 als ausgewählte ID) und einmal dazwischen (mit dem Benutzer ändert sich)?
Soweit ich feststellen konnte, wird der zweite Trigger durch clearCheck provoziert. Code unten:
private void checkAnswer(RadioGroup group, int checkedId){
// this makes sure it doesn't blow up when the check is cleared
// also we don't check the answer when there is no answer
if (checkedId == -1) return;
if (group.getCheckedRadioButtonId() == -1) return;
// check if correct answer
if (checkedId == validAnswerId){
score++;
this.giveFeedBack(feedBackType.GOOD);
} else {
this.giveFeedBack(feedBackType.BAD);
}
// allow for user to see feedback and move to next question
h.postDelayed(this, 800);
}
private void changeToQuestion(int questionNumber){
if (questionNumber >= this.questionSet.size()){
// means we are past the question set
// we're going to the score activity
this.goToScoreActivity();
return;
}
//clearing the check
gr.clearCheck();
// give change the feedback back to question
imgFeedback.setImageResource(R.drawable.question_mark); //OTHER CODE HERE
}
und die run-Methode sieht wie folgt aus
public void run() {
questionNumber++;
changeToQuestion(questionNumber);
}
@qbeticus Thank helfen du, ich mana ged am Ende, um eine boolesche Variable zu verwenden, um herauszufinden, ob onCheckedChanged weiterhin die ausgewählte Option auswerten soll. –
Vielen Dank für die Bestätigung, dass dies ein Fehler ist, ich habe es vermutet, nachdem ich das seltsame Verhalten der Radiogruppe beobachtet hatte. –