簡體   English   中英

Android開發。 RadioButton保持取消選擇狀態

[英]Android Development. RadioButton keeps unselecting

我正在構建一個小測驗應用,假設在問題1上,我選擇選項B,然后提交,測驗給了我下一個問題。 但是對於問題2,如果我嘗試選擇B,則RadioButton會自動取消選中它,並且它是完全不可選中的,直到我選擇另一個單選按鈕,然后再次嘗試B。 該模式是,無論我在上一個問題中選擇的選項如何,在下一個問題中都無法選中該模式,除非我單擊其他單選按鈕然后重試。 我正在附上我的代碼。 有什么幫助嗎?

公共類MainActivity擴展了AppCompatActivity {

QuestionBank allQuestions = new QuestionBank();
String pickedAnswer = "", correctAnswer = "";
final int numberOfQuestions = allQuestions.list.size();
int questionNumber = 0;
boolean noSelection = false;


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

private void nextQuestion() {
    if (questionNumber <= numberOfQuestions - 1) {
        TextView questionLabel = (TextView) findViewById(R.id.question_text_view);
        String fullQuestion = allQuestions.list.get(questionNumber).questionSet.get("question").toString();
        fullQuestion += "\n\na) " + allQuestions.list.get(questionNumber).questionSet.get("a");
        fullQuestion += "\nb) " + allQuestions.list.get(questionNumber).questionSet.get("b");
        fullQuestion += "\nc) " + allQuestions.list.get(questionNumber).questionSet.get("c");
        fullQuestion += "\nd) " + allQuestions.list.get(questionNumber).questionSet.get("d");
        correctAnswer = allQuestions.list.get(questionNumber).questionSet.get("answer").toString();

        questionLabel.setText(fullQuestion);
        questionNumber++;
    } else {
        restart();
    }
}

public void getSelectedAnswer() {
    RadioButton radio_1 = (RadioButton) findViewById(R.id.option1_button);
    RadioButton radio_2 = (RadioButton) findViewById(R.id.option2_button);
    RadioButton radio_3 = (RadioButton) findViewById(R.id.option3_button);
    RadioButton radio_4 = (RadioButton) findViewById(R.id.option4_button);


    if (radio_1.isChecked()) {
        pickedAnswer = "a";
        radio_1.setChecked(false);
    } else if (radio_2.isChecked()) {
        pickedAnswer = "b";
        radio_2.setChecked(false);
    } else if (radio_3.isChecked()) {
        pickedAnswer = "c";
        radio_3.setChecked(false);
    } else if (radio_4.isChecked()) {
        pickedAnswer = "d";
        radio_4.setChecked(false);
    } else {
        noSelection = true;
    }


}

public void submitAnswer(View view) {
    getSelectedAnswer();
    if (noSelection) {
        AlertDialog.Builder a_builder = new AlertDialog.Builder(this);
        a_builder.setMessage("Please select an answer!");
        a_builder.show();
        noSelection = false;
    } else {
        checkAnswer();
        nextQuestion();
    }
}

public void checkAnswer() {

    if (correctAnswer == pickedAnswer) {
        AlertDialog.Builder a_builder = new AlertDialog.Builder(this);
        a_builder.setMessage("Right Answer!");
        a_builder.show();
    } else {
        AlertDialog.Builder a_builder = new AlertDialog.Builder(this);
        a_builder.setMessage("Wrong Answer!");
        a_builder.show();
    }
    pickedAnswer = "";
    correctAnswer = "";

}


public void restart() {
    questionNumber = 0;
    //Collections.shuffle(allQuestions.list);
    nextQuestion();

}

}

在提交之后或顯示下一個問題之前,在所有按鈕上調用setChecked(false)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM