以上是多個 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)導致的不能再選中問題