2011-11-30 45 views

Trả lời

180

Tôi nghĩ rằng một cách tốt hơn là sử dụng RadioGroup và thiết lập người nghe về điều này để thay đổi và cập nhật các View phù hợp (tiết kiệm cho bạn có 2 hoặc 3 hoặc 4 vv người nghe).

RadioGroup radioGroup = (RadioGroup) findViewById(R.id.yourRadioGroup);   
    radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() 
    { 
     @Override 
     public void onCheckedChanged(RadioGroup group, int checkedId) { 
      // checkedId is the RadioButton selected 
     } 
    }); 
+0

Đã không hoạt động đối với tôi, Eclipse đã đề xuất tôi thêm @Override và cố định. Cảm ơn –

+0

yea Tôi sẽ sử dụng radiogroup ngoại trừ nó doesnt làm việc trừ khi nó trực tiếp cha mẹ trong xml và tôi không thể giữ nó như là một phụ huynh trực tiếp kể từ này radiobutton ngu ngốc không thể được liên kết với trung tâm vì vậy tôi đã phải kèm theo nó trong một linearlayout ... –

+0

bạn có thể thử định tâm radio bằng cách đặt ** android: gravity = "center" ** vào xml dưới thẻ RadioGroup. @RudolfRein – OuuGiii

35

Hy vọng điều này sẽ giúp bạn ...

RadioButton rb = (RadioButton) findViewById(R.id.yourFirstRadioButton); 
rb.setOnClickListener(first_radio_listener); 

OnClickListener first_radio_listener = new OnClickListener(){ 
public void onClick(View v) { 
    //Your Implementaions... 
} 
}; 
+3

đôi khi nó rõ ràng hơn để có ba trình xử lý riêng biệt.+1 –

+1

Làm việc như một sự quyến rũ, đừng quên thêm dấu chấm phẩy sau khi dấu ngoặc nhọn cuối cùng của bạn trên trình nghe nhấp chuột vào của bạn – inVINCEable

7

Bạn cũng có thể thêm người nghe từ bố cục XML: android:onClick="onRadioButtonClicked" trong thẻ <RadioButton/> của bạn.

<RadioButton android:id="@+id/radio_pirates" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/pirates" 
    android:onClick="onRadioButtonClicked"/> 

Xem Android developer SDK- Radio Buttons để biết chi tiết.

20
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() 
    { 
     public void onCheckedChanged(RadioGroup group, int checkedId) { 
      // checkedId is the RadioButton selected 
      RadioButton rb=(RadioButton)findViewById(checkedId); 
      textViewChoice.setText("You Selected " + rb.getText()); 
      //Toast.makeText(getApplicationContext(), rb.getText(), Toast.LENGTH_SHORT).show(); 
     } 
    }); 
6

Chỉ trong trường hợp ai đó đã struggeling với câu trả lời được chấp nhận:

Có khác nhau OnCheckedChangeListener-giao diện. Tôi đã thêm vào hộp kiểm đầu tiên để xem Hộp kiểm đã được thay đổi chưa.

import android.widget.CompoundButton.OnCheckedChangeListener; 

vs

import android.widget.RadioGroup.OnCheckedChangeListener; 

Khi thêm đoạn mã từ Ricky Tôi có lỗi:

Phương pháp setOnCheckedChangeListener (RadioGroup.OnCheckedChangeListener) trong các loại RadioGroup không áp dụng cho các đối số (mới CompoundButton.OnCheckedChangeListener() {})

Có thể được cố định với câu trả lời từ Ali:

new RadioGroup.OnCheckedChangeListener() 
16

Câu hỏi đặt ra là về Phát hiện mà nút radio được nhấp, đây là cách bạn có thể nhận được nút mà được nhấp

final RadioGroup radio = (RadioGroup) dialog.findViewById(R.id.radioGroup1); 
     radio.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(RadioGroup group, int checkedId) { 

       View radioButton = radio.findViewById(checkedId); 
       int index = radio.indexOfChild(radioButton); 

       // Add logic here 

       switch (index) { 
       case 0: // first button 

        Toast.makeText(getApplicationContext(), "Selected button number " + index, 500).show(); 
        break; 
       case 1: // secondbutton 

        Toast.makeText(getApplicationContext(), "Selected button number " + index, 500).show(); 
        break; 
       } 
      } 
     }); 
2

Vì đây câu hỏi không cụ thể đối với Java, tôi muốn thêm cách bạn có thể làm điều đó trong Kotlin:

radio_group_id.setOnCheckedChangeListener({ radioGroup, optionId -> { 
     when (optionId) { 
      R.id.radio_button_1 -> { 
       // do something when radio button 1 is selected 
      } 
      // add more cases here to handle other buttons in the RadioGroup 
     } 
    } 
}) 

Đây là radio_group_id được gán android:id của RadioGroup có liên quan. Để sử dụng nó theo cách này, bạn sẽ cần phải nhập kotlinx.android.synthetic.main.your_layout_name.* vào tệp Kotlin của hoạt động của bạn. Cũng lưu ý rằng trong trường hợp tham số lambda radioGroup không được sử dụng, nó có thể được thay thế bằng _ (dấu gạch dưới) từ Kotlin 1.1.

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