2012-02-21 23 views
21

Tôi có một nhóm radio mà tôi không muốn người dùng có thể chọn bất kỳ nút nào cho đến khi một hộp kiểm cụ thể được chọn trong ứng dụng của tôi. Nếu hộp kiểm không được bật thì điều này sẽ vô hiệu hóa nhóm radio. Làm thế nào để tôi làm việc này.Cách tắt RadioGroup cho đến khi hộp kiểm được kiểm tra

Trả lời

51

Bí quyết thực sự là để lặp qua tất cả trẻ em xem (trong trường hợp này: CheckBox) và gọi nó là setEnabled(boolean)

Something như thế này nên làm như lừa:

//initialize the controls 
final RadioGroup rg1 = (RadioGroup)findViewById(R.id.radioGroup1); 
CheckBox ck1 = (CheckBox)findViewById(R.id.checkBox1); 

//set setOnCheckedChangeListener() 
ck1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

    @Override 
    public void onCheckedChanged(CompoundButton checkBox, boolean checked) { 
     //basically, since we will set enabled state to whatever state the checkbox is 
     //therefore, we will only have to setEnabled(checked) 
     for(int i = 0; i < rg1.getChildCount(); i++){ 
      ((RadioButton)rg1.getChildAt(i)).setEnabled(checked); 
     } 
    } 
}); 

//set default to false 
for(int i = 0; i < rg1.getChildCount(); i++){ 
    ((RadioButton)rg1.getChildAt(i)).setEnabled(false); 
} 
+0

Thật tuyệt khi biết rằng "hack bẩn" tôi đã làm dường như là cách thực tế để làm điều đó. : D – WORMSS

0

Bạn có thể sử dụng onCheckedChangeListener trên Hộp kiểm của mình và sử dụng phương thức setEnabled trên RadioGroup của mình.

Best wishes, Tim

+4

radiogroup.setEnabled (true); không hoạt động – Elchin

+3

Xin lỗi, nhưng điều này không hoạt động trên RadioGroup. Nó không lan truyền xuống dường như. – WORMSS

-1

Hãy hành động theo trạng thái của hộp kiểm và thiết lập RadioGroup cho phù hợp. Giả sử bạn có nhóm radio có tên radiogroup, bạn có thể bật hoặc tắt nhóm radio theo số

radiogroup.setEnabled (true);

Thêm một OnCheckedChangeListener() vào hộp kiểm của bạn.

+4

radiogroup.setEnabled (true); không hoạt động – Elchin

+2

Các mục RadioButton riêng lẻ phải được tắt. –

0

RadioGroup không thể bị vô hiệu hóa trực tiếp, chúng ta phải lặp qua nút radio và đặt nó là giả.

Các vấn đề liên quan