andorid studio RadioButton 设置 setChecked(false) 后不能再选中

以上是多个 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)导致的不能再选中问题

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章