如何在Java中选中不同的单选按钮时显示不同的消息?
How to display different messages when different radio buttons are checked in Java?
我想在选中第一个单选按钮时显示 "You clicked the wrong answer",在选中第二个单选按钮时显示 "You clicked the correct answer"。使用此代码,我得到一个错误:Cannot resolve symbol 'CorrectAnswer'
。 bariable CorrectAnswer
是数据库查询的结果。这是我的代码:
radioGroup = new RadioGroup[2];
answer = new RadioButton[2];
int i = 0;
for (Question qn : questions) {
radioGroup[i] = new RadioGroup(this);
int j = 0;
for (Answer an : answers) {
if (qn.getID() == an.getQuestion_id_answer()) {
String answers_log = " " + an.getAnswer();
Integer CorrectAnswer = an.getCorrect_answer();
answer[j] = new RadioButton(this);
answer[j].setText(answers_log);
radioGroup[i].addView(answer[j]);
j++;
}
}
linearLayout.addView(radioGroup[i]);
radioGroup[i].setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case 0:
if (CorrectAnswer == 1) {
Toast.makeText(getApplicationContext(), "You clicked the correct answer ", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "You clicked the incorrect answer ", Toast.LENGTH_SHORT).show();
}
break;
case 1:
if (CorrectAnswer == 1) {
Toast.makeText(getApplicationContext(), "You clicked the correct answer ", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "You clicked the incorrect answer ", Toast.LENGTH_SHORT).show();
}
break;
}
}
});
i++;
}
数据库结构是这样的:
db.addAnswer(new Answer("NY", 3, 0));
db.addAnswer(new Answer("WA", 3, 1));
如您所见,在第三列中我有 1,这意味着第二个答案是正确的。
谢谢!
i get an error: Cannot resolve symbol 'CorrectAnswer'
因为 CorrectAnswer
变量不在尝试访问它的方法范围内。
要么将其声明为全局变量,要么使用 RadioButton
的 setTag/getTag
来获取 onCheckedChanged
中的 CorrectAnswer
值
我认为使用 setTag/getTag 方法将 CorrectAnswer
设置为:
1. 首先用 RadioButton
保存值 使用 setTag
:
answer[j] = new RadioButton(this);
answer[j].setTag(String.valueOf(an.getCorrect_answer()));
answer[j].setText(answers_log);
2. 在onCheckedChanged
get selected RadioButton
value as:
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton checkedRadioButton = (RadioButton)group.findViewById(checkedId);
int CorrectAnswer=Integer.parseInt(checkedRadioButton.getTag().toString());
....your code here...
}
我想在选中第一个单选按钮时显示 "You clicked the wrong answer",在选中第二个单选按钮时显示 "You clicked the correct answer"。使用此代码,我得到一个错误:Cannot resolve symbol 'CorrectAnswer'
。 bariable CorrectAnswer
是数据库查询的结果。这是我的代码:
radioGroup = new RadioGroup[2];
answer = new RadioButton[2];
int i = 0;
for (Question qn : questions) {
radioGroup[i] = new RadioGroup(this);
int j = 0;
for (Answer an : answers) {
if (qn.getID() == an.getQuestion_id_answer()) {
String answers_log = " " + an.getAnswer();
Integer CorrectAnswer = an.getCorrect_answer();
answer[j] = new RadioButton(this);
answer[j].setText(answers_log);
radioGroup[i].addView(answer[j]);
j++;
}
}
linearLayout.addView(radioGroup[i]);
radioGroup[i].setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case 0:
if (CorrectAnswer == 1) {
Toast.makeText(getApplicationContext(), "You clicked the correct answer ", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "You clicked the incorrect answer ", Toast.LENGTH_SHORT).show();
}
break;
case 1:
if (CorrectAnswer == 1) {
Toast.makeText(getApplicationContext(), "You clicked the correct answer ", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "You clicked the incorrect answer ", Toast.LENGTH_SHORT).show();
}
break;
}
}
});
i++;
}
数据库结构是这样的:
db.addAnswer(new Answer("NY", 3, 0));
db.addAnswer(new Answer("WA", 3, 1));
如您所见,在第三列中我有 1,这意味着第二个答案是正确的。
谢谢!
i get an error: Cannot resolve symbol 'CorrectAnswer'
因为 CorrectAnswer
变量不在尝试访问它的方法范围内。
要么将其声明为全局变量,要么使用 RadioButton
的 setTag/getTag
来获取 onCheckedChanged
CorrectAnswer
值
我认为使用 setTag/getTag 方法将 CorrectAnswer
设置为:
1. 首先用 RadioButton
保存值 使用 setTag
:
answer[j] = new RadioButton(this);
answer[j].setTag(String.valueOf(an.getCorrect_answer()));
answer[j].setText(answers_log);
2. 在onCheckedChanged
get selected RadioButton
value as:
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton checkedRadioButton = (RadioButton)group.findViewById(checkedId);
int CorrectAnswer=Integer.parseInt(checkedRadioButton.getTag().toString());
....your code here...
}