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 你的分数不会改变,但它没有逻辑
我正在为 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 你的分数不会改变,但它没有逻辑