我有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);
}
}
}
}
});
谢谢!
答案 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);
}
});
}
}
以下是它的外观
点击两下