我已经以编程方式创建了5个无线电组,每组有4个单选按钮。每个单选按钮代表一个问题的答案。我想当有人按下按钮时,如果选中了正确的答案,则将该文本的颜色设置为绿色。我想要做的是,在第二个OnClickListener
中检查哪个单选按钮被检查,如果是正确的,则将文本设为绿色。因此,使用此代码,当我按下按钮时,没有任何反应。如果我删除条件if (CorrectAnswer == 1)
并按下按钮,则会出现此错误:Attempt to invoke virtual method 'void android.widget.RadioButton.setTextColor(int)' on a null object reference
。有任何想法吗?这是我的代码:
boolean isChecked;
RadioButton checkedRadioButton;
RadioGroup radioButtonGroup;
int CorrectAnswer;
radioGroup[i].addView(answer[j]);
answer[j].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
checkedRadioButton = ((RadioButton) v);
int CorrectAnswer = Integer.parseInt(checkedRadioButton.getTag().toString());
isChecked = true;
if (isChecked) {
if (checkedRadioButton.isChecked() & CorrectAnswer == 1) {
score++;
isChecked = false;
}
}
}
});
finishButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (int i = 0; i < radioGroup.length; i++) {
int radioGroupId = radioGroup[i].getId();
radioButtonGroup = (RadioGroup) findViewById(radioGroupId);
int checkedRadioButtonId = radioButtonGroup.getCheckedRadioButtonId();
checkedRadioButton = (RadioButton) findViewById(checkedRadioButtonId);
if (CorrectAnswer == 1) {
checkedRadioButton.setTextColor(Color.GREEN);
}
for (int j = 0; j < answer.length; j++) {
radioGroup[i].getChildAt(j).setEnabled(false);
}
}
}
});
谢谢!
答案 0 :(得分:0)
这样做是为了避免在空引用上调用方法。
if (CorrectAnswer == 1 && checkedRadioButton != null)
编辑:
将声明更改为此
if (checkedRadioButton != null && Integer.parseInt(checkedRadioButton.getTag().toString()) == 1)