以上是多个 RadioButton 放在一个 RadioGroup里面,此前的思路是让用户每点击一次”分段“按钮后都让这些类型清空,避免用户下次忽略导致了重复选择。
所以此前的思路是:
RadioGroup rb= (RadioGroup) findViewById(R.id.RadioGroup_type) ;//获取单选组
for(int i=0;i<rb.getChildCount();i++){//循环获取单选按钮的文本
RadioButton r=(RadioButton) rb.getChildAt(i);
if(r.isChecked()){
s_type=r.getText().toString();//根据按钮文本设置类型
switch (s_type){//根据类型设置时间总和
.....
}
r.setChecked(false);//去掉选中状态
break;
}
}
但是发现一个问题,用户下次想点击同样的按钮的时候,无法选中了!
后面查了资料才知道:上面的去掉选中的代码只设置了radiobutton的属性,并没有设置radiogroup的属性,所以对于radiogroup来说,它并不知道你的radiobutton已经设置成了false。也就是group还是以为它是选中的。所以新的解决方案是:在group层面使用clearCheck()
RadioGroup rb= (RadioGroup) findViewById(R.id.RadioGroup_type) ;//获取单选组
for(int i=0;i<rb.getChildCount();i++){//循环获取单选按钮的文本
RadioButton r=(RadioButton) rb.getChildAt(i);
if(r.isChecked()){
s_type=r.getText().toString();//根据按钮文本设置类型
switch (s_type){//根据类型设置时间总和
....
}
//r.setChecked(false);//去掉选中状态
break;
}
}
rb.clearCheck();//解决r.setChecked(false)导致的不能再选中问题