我正在研究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
时,分数将再次更新。你能帮我解决这个问题吗?
答案 0 :(得分:0)
您可以按setEnabled(boolean)
禁用RadioButton或RadioGroup。
例如,您可以禁用
选择的单选按钮radiobutton1.setEnabled(false);
我建议在此时禁用所有单选按钮,以防止用户更改其答案。您可以通过呼叫无线电组上的setEnabled(boolean)
一次完成所有操作。
RadioGroup group = (RadioGroup) findViewById(R.id.myRadioGroup);
group.setEnabled(false);
答案 1 :(得分:0)
当用户点击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;
}
}
答案 2 :(得分:0)
你已经考虑过你的测验的逻辑,当然得分会增加,因为当你选择正确的答案并在监听器中检查这个(这个方法调用按钮上的每次点击),这将是错误的结果,也许你可以试试单击按钮(下一步,检查)或使用问题滑动片段时make isChecked,或者您可以使用某些变量,例如错误右指示器的标志,
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 }
}
它只工作一次,当你点击正确答案时,当你点击任何单选按钮并返回右边时你的分数不会改变,但它没有逻辑