我正在开发一个在单选按钮上显示选项的测验应用程序。问题是,当我单击下一个按钮转到下一个问题时,会选择之前的单选按钮的 ID,从而导致我得到错误的答案,因为之前单击的任何按钮都将用于比较回答另一个问题导致错误的答案。例如,如果我在问题 1 中选择的答案已分配给单选按钮 1,则当我单击下一个按钮移至下一个问题时,它将自动选择在下一个问题中分配给单选按钮 1 的任何选项。只有当问题 1 和 2 的正确选项是选项 1 时,答案才是正确的。希望我的问题有点清楚。 这就是我所做的
private void loadData(View view){
//generate a random number to get a question based on the generated index
List<Integer> list = new ArrayList<>();
for (int i=1;i<=15;i++){
list.add(i);
}
Collections.shuffle(list);
generatedIndex =list.get(0);
if (count ==11){
buttonNext.setText("Submit");
}else if (count >10){
submitTest();
}else {
loadQuestions(generatedIndex,view);
}
//remove the index of the asked question
list.remove(0);
}
private void loadQuestions(int index,View view){
viewModel.getMutableLiveData().observe(getViewLifecycleOwner(), new Observer<List<QuestionModel>>() {
@Override
public void onChanged(List<QuestionModel> questionModels) {
rightAnswer = questionModels.get(index).getAnswer();
tv.setText(questionNumber+"."+questionModels.get(index).getQuestion());
rb1.setText(questionModels.get(index).getOption1());
rb2.setText(questionModels.get(index).getOption2());
rb3.setText(questionModels.get(index).getOption3());
rb4.setText(questionModels.get(index).getOption4());
verifyAnswer(view);
}
});
}
private void verifyAnswer(View view) {
if (rg.getCheckedRadioButtonId() != -1) {
RadioButton option = view.findViewById(rg.getCheckedRadioButtonId());
selectedOption = option.getText().toString();
if (selectedOption.equalsIgnoreCase(rightAnswer)) {
correctAnswer += 2;
} else {
correctAnswer += 0;
}
rg.clearCheck();
}
rg.clearCheck();
count +=1;
questionNumber = count;
System.out.println("You have scored: "+correctAnswer);
}
问题似乎可能与您如何处理单选按钮选择和清除检查有关。不要在检查所选选项后立即使用 rg.clearCheck(),而是尝试将其移到 if (rg.getCheckedRadioButtonId() != -1) 块之外。这样就不会干扰下一题的广播组了。