2012-03-23 28 views

Respuesta

145

Si su grupo de radio está definido en un archivo xml de diseño, a cada botón se le puede asignar una identificación. A continuación, sólo echa un botón como éste

radioGroup.check(R.id.myButtonId); 

Si ha creado el grupo de radio mediante programación (ni siquiera estoy seguro de cómo se hace esto ...), es posible que desee considerar la creación de un archivo XML diseño especial sólo para el grupo de radio para que pueda asignar R.id. * ids a los botones.

Consulte la respuesta a continuación si, de hecho, desea configurar el grupo de botones de opción por índice, consulte la respuesta a continuación.

+2

Hola, creé ellos programtically mediante este código: for (int i = 0; i

+0

Dado que está configurando sus identificadores en el índice en lookupTypes, puede usar ese índice como argumento para el método 'check'. – jjm

+0

esta respuesta literalmente solo explica nuevamente lo que el solicitante de la pregunta ya indicó: la otra respuesta debe ser la respuesta aceptada, ya que correctamente indica cómo seleccionar por índice. –

65

Pregunta dijo "conjunto de índices seleccionados", aquí es cómo configurarlo por el índice:

((RadioButton)radioGroup.getChildAt(index)).setChecked(true); 

........

Otros detalles: Parece que Google quiere que uses id en lugar de índice, porque usar id es más a prueba de errores. Por ejemplo, si tiene otro elemento UI en su RadioGroup, o si otro desarrollador reordena los RadioButton, los índices podrían cambiar y no ser lo que usted esperaba. Pero si eres el único desarrollador, esto está totalmente bien.

+0

¿Puede explicar este código, cómo es la respuesta correcta? – rfornal

+1

@rfornal este código le permite tomar el botón de opción por ÍNDICE, en oposición a Ver ID (como R.id.radioButton1), y reduce la necesidad de implementar una tabla de búsqueda para convertir el índice para ver el ID. – Siavash

+5

esto debe ser aceptado – oyatek

2

puedes encontrar findById del grupo de radio.

((RadioButton)my_radio_group.findViewById(R.id.radiobtn_veg)).setChecked(true);` 
3

respuesta de Siavash es correcta:

((RadioButton)radioGroup.getChildAt(index)).setChecked(true); 

Pero tenga en cuenta que un radioGroup puede contener puntos de vista distintos de los botones de radio - como este ejemplo que incluye una línea débil en cada elección.

<RadioGroup 
    android:id="@+id/radioKb" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <RadioButton 
     android:id="@+id/kb1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:button="@null" 
     android:drawableRight="@android:drawable/btn_radio" 
     android:text="Onscreen - ABC" /> 

    <View 
     android:layout_width="fill_parent" 
     android:layout_height="1dp" 
     android:background="#33000000" /> 

    <RadioButton 
     android:id="@+id/kb2" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:button="@null" 
     android:drawableRight="@android:drawable/btn_radio" 
     android:text="Onscreen - Qwerty" /> 

    <View 
     android:layout_width="fill_parent" 
     android:layout_height="1dp" 
     android:background="#33000000" /> 

    <RadioButton 
     android:id="@+id/kb3" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:button="@null" 
     android:drawableRight="@android:drawable/btn_radio" 
     android:text="Standard softkey" /> 

    <View 
     android:layout_width="fill_parent" 
     android:layout_height="1dp" 
     android:background="#33000000" /> 

    <RadioButton 
     android:id="@+id/kb4" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:button="@null" 
     android:drawableRight="@android:drawable/btn_radio" 
     android:text="Physical keyboard" /> 

    <View 
     android:layout_width="fill_parent" 
     android:layout_height="1dp" 
     android:background="#33000000" /> 

</RadioGroup> 

En este caso, usar un índice de 1, por ejemplo, generaría un error. El ítem en el índice 1 es la primera línea de separación, no un radioButton. Los botones de radio en este ejemplo se encuentran en los índices 0, 2, 4, 6.

1

Esto funcionó para mí, he creado botón de radio dinámicamente por

private void createRadioButton() { 

    RadioButton[] rb = new RadioButton[5]; 

    RadioGroup.LayoutParams layoutParams = new RadioGroup.LayoutParams(
      ViewGroup.LayoutParams.WRAP_CONTENT, 
      ViewGroup.LayoutParams.WRAP_CONTENT, 
      1.0f); 

    radioGroup.setOrientation(RadioGroup.HORIZONTAL); 

    for (int ID = 0; ID < 5; ID++) { 
     rb[ID] = new RadioButton(this); 
     rb[ID].setLayoutParams(layoutParams); 
     rb[ID].setText("Button_Text"); 
     radioGroup.addView(rb[ID]); //the RadioButtons are added to the radioGroup instead of the layout 
    } 
} 

Ahora compruebe un botón utilizando,

int radio_button_Id = radioGroup.getChildAt(index).getId(); 

radioGroup.check(radio_button_Id); 
Cuestiones relacionadas