2011-11-30 17 views

Odpowiedz

180

myślałem lepszym sposobem jest użycie RadioGroup i ustawić słuchacza na to, aby zmienić i zaktualizuj View odpowiednio (oszczędza ci 2 lub 3 lub 4 itd. słuchaczy).

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

Nie działa dla mnie, Eclipse zasugerował, żebym dodał @Override, i to naprawiono. Dzięki –

+0

tak bym użył radiogroup, z wyjątkiem tego, że nie działa, dopóki nie jest bezpośrednim rodzicem w xml i nie mogę go zachować jako bezpośredniego rodzica, ponieważ ten głupi radiobutton nie może być wyrównany do centrum, więc musiałem zamknąć go w linearlayout ... –

+0

możesz spróbować wyśrodkować radiobutton umieszczając ** android: gravity = "center" ** w xml pod tagiem RadioGroup. @RudolfRein – OuuGiii

35

Nadzieja to pomoże ...

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

i

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

Czasami lepiej jest mieć trzy oddzielne procedury obsługi.+1 –

+1

Pracowałem jak zaklęcie, nie zapomnij dodać średnika po ostatnim nawiasie klamrowym na odbiorniku click on – inVINCEable

7

Można też dodać słuchacza z układu XML: android:onClick="onRadioButtonClicked" w tagu <RadioButton/>.

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

Aby uzyskać szczegółowe informacje, patrz Android developer SDK- Radio Buttons.

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

wszelki wypadek ktoś inny struggeling z przyjętą odpowiedzi:

Istnieją różne OnCheckedChangeListener interfejsy. Dodałem do pierwszego, aby sprawdzić, czy CheckBox został zmieniony.

import android.widget.CompoundButton.OnCheckedChangeListener; 

vs

import android.widget.RadioGroup.OnCheckedChangeListener; 

Dodając fragment z Ricky miałem błędy:

Metoda setOnCheckedChangeListener (RadioGroup.OnCheckedChangeListener) w rodzaju RadioGroup nie dotyczy argumentów (nowy CompoundButton.OnCheckedChangeListener() {})

Może być ustalona z odpowiedzią od Ali:

new RadioGroup.OnCheckedChangeListener() 
16

Pytanie było o Wykrywanie który przycisk radiowy kliknięciu, to w jaki sposób można uzyskać który kliknięciu przycisku

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

Od tego pytanie nie jest specyficzne dla Javy, chciałbym dodać, jak można to zrobić w 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 
     } 
    } 
}) 

Tutaj radio_group_id jest przypisanym android:id zainteresowanej grupy radiowej. Aby użyć go w ten sposób, musisz zaimportować kotlinx.android.synthetic.main.your_layout_name.* do pliku Kotlin Twojej działalności. Należy również zauważyć, że w przypadku, gdy parametr lambda radioGroup nie jest używany, można go zastąpić _ (podkreślenie) od czasu Kotlina 1.1.

Powiązane problemy