2011-11-30 41 views

Respuesta

180

pensaría una mejor manera es utilizar RadioGroup y establecer el oyente en esto para cambiar y actualizar el View en consecuencia (le ahorra tener 2 o 3 o 4 oyentes, etc.).

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

No funcionaba para mí, Eclipse sugirió que agregue @Override, y que se corrigió. Gracias –

+0

sí, yo usaría radiogroup excepto que no funciona a menos que sea un padre directo en el xml y no puedo mantenerlo como un padre directo ya que este estúpido radiobutton no se puede alinear al centro, así que tuve que encerrarlo en un linearlayout ... –

+0

puede tratar de centrar el botón de radio colocando ** android: gravity = "center" ** en el xml debajo de la etiqueta RadioGroup. @RudolfRein – OuuGiii

35

Hope esto le ayudará a ...

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

y

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

a veces es más claro tener tres controladores separados.+1 –

+1

Funcionó como un amuleto, no se olvide de agregar un punto y coma después de su último corchete en su escucha en clic – inVINCEable

7

También puede añadir oyente a partir del formato XML: android:onClick="onRadioButtonClicked" en su etiqueta <RadioButton/>.

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

Ver Android developer SDK- Radio Buttons para más detalles.

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

Sólo en caso de que alguien se struggeling con la respuesta aceptada:

Hay diferentes OnCheckedChangeListener interfaces. Añadí al primero para ver si se cambió un CheckBox.

import android.widget.CompoundButton.OnCheckedChangeListener; 

vs

import android.widget.RadioGroup.OnCheckedChangeListener; 

Al añadir el fragmento de Ricky tenía errores:

El método setOnCheckedChangeListener (RadioGroup.OnCheckedChangeListener) en el RadioGroup tipo no es aplicable para los argumentos (nuevo CompoundButton.OnCheckedChangeListener() {})

se puede solucionar con la respuesta de Ali:

new RadioGroup.OnCheckedChangeListener() 
16

La pregunta fue sobre Detección qué botón se hace clic, se trata de cómo se puede conseguir lo que se hace clic

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

Desde este la pregunta no es específica de Java, me gustaría agregar cómo puede hacerlo en 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 
     } 
    } 
}) 

Aquí radio_group_id es el android:id asignado del RadioGroup en cuestión. Para usarlo de esta manera, deberá importar kotlinx.android.synthetic.main.your_layout_name.* en el archivo Kotlin de su actividad. También tenga en cuenta que en caso de que el parámetro lambda radioGroup no se utilice, puede reemplazarse con _ (un guión bajo) desde Kotlin 1.1.

Cuestiones relacionadas