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)導致的不能再選中問題

 

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