在Java中按下按钮时如何设置文本的文本颜色?

时间:2015-11-10 09:31:50

标签: java android loops if-statement onclicklistener

我已经以编程方式创建了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);
            }
        }
    }
});

谢谢!

1 个答案:

答案 0 :(得分:0)

这样做是为了避免在空引用上调用方法。

if (CorrectAnswer == 1 && checkedRadioButton  != null) 

编辑:

将声明更改为此

if (checkedRadioButton  != null && Integer.parseInt(checkedRadioButton.getTag().toString()) == 1)