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

时间:2015-11-09 20:23:25

标签: java android loops if-statement onclicklistener

我有5个无线电组,每组有4个单选按钮。每个单选按钮代表一个问题的答案。我想当有人按下按钮时,如果选中了正确的答案,则将该文本的颜色设置为绿色。使用此代码,当我按下按钮时,没有任何反应。有任何想法吗? 这是我的代码:

boolean isChecked;
int CorrectAnswer;
RadioButton checkedRadioButton;

    answer[j].setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        RadioButton 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++) {
                for (int j = 0; j < answer.length; j++) {
                radioGroup[i].getChildAt(j).setEnabled(false);
                    if (CorrectAnswer == 1) {
                        checkedRadioButton.setTextColor(Color.GREEN);
                    }
                }
            }
        }
    });

谢谢!

1 个答案:

答案 0 :(得分:1)

与选定的无线电按钮接口的一种更简单的方法是不要采用V,而是直接从RadioGroup获取ID。你会做这样的事情:

int selectedId = yourRadioGroup.getCheckedRadioButtonId();
selected = (RadioButton) findViewById(selectedId);
selected.setTextColor(Color.Green);

如果你选择了上面选择的所选单选按钮,你甚至可以从其他听众那里做任何你想做的事情。您更改文本颜色的唯一位置是finishButton侦听器。当您单击右侧RadioButton时,您是否尝试更改颜色?你正在增加你的另一个听众的得分等,所以为什么不在那里设置颜色而不是在finishButton();现在你仍然可以设置它,只需确保你正确选择单选按钮。

修改

好的,这是我所指的一个非常简单的例子。注意我创建了一个临时全局变量来保存所选设备。现在这不是嵌套的for循环,但原理是100%相同。

public class MainActivity extends AppCompatActivity {
Button btn, btn2;
RadioGroup radioButtonGroup;
RadioButton selected;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn = (Button) findViewById(R.id.button);
    btn2 = (Button) findViewById(R.id.button2);
    radioButtonGroup = (RadioGroup) findViewById(R.id.rad);
    boolean isValid = false;
    btn.setOnClickListener(new View.OnClickListener() {
        RadioButton rad;
        @Override
        public void onClick(View v) {
            if(selected != null) {
                selected.setTextColor(Color.BLACK);

            }
            int selectedId = radioButtonGroup.getCheckedRadioButtonId();
            selected = (RadioButton) findViewById(selectedId);
            selected.setTextColor(Color.GREEN);
        }
    });

    btn2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(selected != null) {
                selected.setTextColor(Color.BLACK);

            }
            int selectedId = radioButtonGroup.getCheckedRadioButtonId();
            selected = (RadioButton)findViewById(selectedId);
            selected.setTextColor(Color.RED);
        }
    });
  }
}

以下是它的外观

enter image description here

点击两下

enter image description here