У меня проблема с clearChecked () RadioGroup. Я показываю пользователю вопрос с несколькими вариантами ответов, и после того, как пользователь выбирает ответ, я проверяю ответ, даю ему некоторую обратную связь и затем перехожу к следующему вопросу. В процессе перехода к следующему вопросу я убираю флажок в RadioGroup.
Может кто-нибудь объяснить мне, почему метод onCheckedChanged вызывается 3 раза? Один раз, когда изменение действительно происходит (с изменениями пользователя), один раз, когда я очищаюCheck (с -1 в качестве выбранного идентификатора) и один раз между (с изменением пользователя)?
Насколько я могу судить, второй триггер спровоцирован clearCheck. Код ниже:
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
}
и метод запуска выглядит следующим образом
public void run() {
questionNumber++;
changeToQuestion(questionNumber);
}