如何重置收音机组内的单选按钮,如下面的图像示例
我的所有广播组及其单选按钮都是以编程方式创建的。
我尝试在更改前设置OnClickListener以获取单选按钮值,但是它没有帮助。
编辑:我在下面发布了答案,请检查一下。
答案 0 :(得分:0)
你必须在检查另一个时取消选中一个单选按钮。
简单的方法。
public void clearRadioChecked() {
alt1.setChecked(false);
blt2.setChecked(false);
}
如果你想选择alt1,那么点击alt1,如下所示。
clearRadioChecked()
alt1.setChecked(true);
答案 1 :(得分:0)
试试这个:
MAX_
xml layout
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) {
if (checkedId == R.id.radioButton){
//do something
}
else if(checkedId == R.id.radioButton2){
}
else{
}
});
答案 2 :(得分:0)
我就这样做了:
它在C#中,但我认为很容易将其转换为Java。
我用标签知道之前是否检查过这个单选按钮。
错误=>没有检查
True =>检查
radiobutton.Tag = false;
radiobutton.Click += SingleChoiceQuestionAlternativeClick;
然后:
private void SingleChoiceQuestionAlternativeClick(object sender, EventArgs e)
{
RadioButton questionAlternative = sender as RadioButton;
if (questionAlternative != null)
{
RadioGroup questionAlternatives = questionAlternative.Parent as RadioGroup;
if (questionAlternatives != null)
{
if (questionAlternative.Tag.Equals(false))
{
for (int i = 0; i < questionAlternatives.ChildCount; i++)
{
RadioButton childRadioButton = questionAlternatives.GetChildAt(i) as RadioButton;
if (childRadioButton != null)
{
childRadioButton.Tag = false;
}
}
questionAlternative.Tag = true;
}
else
{
questionAlternative.Tag = false;
questionAlternatives.ClearCheck();
}
}
}
}