Android 测验应用中的单选按钮

Radiobutton in Android Quiz app

我正在为 Android 开发测验应用程序,我在 RadioGroup 中使用 RadioButtons。我想实现的是,当有人检查正确答案时(本例为 id/krzyzyk),分数将增加一分。我做了这个代码:

int score = 2;

public void onRadioButtonClicked(View view) {
    RadioButton radiobutton1 = (RadioButton) findViewById(R.id.krzyzyk);

    if (radiobutton1.isChecked()) {
        score = score + 1;
    }
}

它有效,但是当我 运行 应用程序并单击另一个 RadioButton 并再次 id/krzyzyk 时,分数将再次更新。你能帮我解决这个问题吗?

您可以通过 setEnabled(boolean) 禁用 RadioButton 或 RadioGroup。

例如,您可以禁用

选择的单选按钮
radiobutton1.setEnabled(false);

我建议此时禁用所有单选按钮,以防止用户更改他们的答案。您可以通过在无线电组中调用 setEnabled(boolean) 来一次完成所有这些操作。

RadioGroup group = (RadioGroup) findViewById(R.id.myRadioGroup);
group.setEnabled(false);

当用户点击 RadioButton krzyzyk

时,您的代码将始终增加分数

如果选择的 RadioButton 正确,我会建议您提交答案并转到下一个问题,增加分数。

将您的代码更改为:

public void onRadioButtonClicked(View view) {
    // Is the button now checked?
    boolean checked = ((RadioButton) view).isChecked();

    // Check which radio button was clicked
    switch(view.getId()) {
        case R.id.correct_answer: // this is id/krzyzyk
            if (checked)
                score++;
                // Go to next question
            break;
        case R.id.wrong_answer:
            if (checked)
                // Go to next question.
            break;
    }
}

你已经考虑了你的测验逻辑,当然分数会增加,因为当你选择正确答案并在监听器中检查这个(这个方法在每次点击按钮时调用),它会是错误的结果,也许可以你尝试 make isChecked 当你点击按钮(Next,Check)或用问题滑动片段时,或者你可以使用一些变量,比如错误正确指示器的标志,

int m_rightAnswer =0;
...
public void onRadioButtonClicked(View view) {
   RadioButton radiobutton1 = (RadioButton) findViewById(R.id.krzyzyk);

    if (radiobutton1.isChecked() && m_rightAnswer==0){
        score = score + 1; m_rightAnswer=1 }
              }

它只工作一次,当你点击正确的答案,当你点击任何单选按钮和右边的 return 你的分数不会改变,但它没有逻辑