2012-02-07 18 views
104

He creado RadioGroup y RadioButton dinámica de la siguiente maneracómo configurar botón de opción marcada por defecto en radiogroup con Android

RadioGroup radioGroup = new RadioGroup(context); 
        RadioButton radioBtn1 = new RadioButton(context); 
        RadioButton radioBtn2 = new RadioButton(context); 
        RadioButton radioBtn3 = new RadioButton(context); 

        radioBtn1.setText("Less"); 
        radioBtn2.setText("Normal"); 
        radioBtn3.setText("More"); 

        radioBtn2.setChecked(true); 

        radioGroup.addView(radioBtn1); 
        radioGroup.addView(radioBtn2); 
        radioGroup.addView(radioBtn3); 

Aquí paso radioBtn2.setChecked(true); provoca radioBtn2 siempre se comprueba. Eso significa que no puedo desmarcar radioBtn2 marcando otros dos botones de opción (radioBtn1, radioBtn3). Quiero hacer que RadioGroup solo pueda marcar un botón de radio a la vez (Ahora puede verificar dos botones de radio a la vez). ¿Como puedó resolver esté problema?

+0

es que hay que necesita de forma dinámica ??? –

Respuesta

167

que debe comprobar el botón de radio en el radiogroup así:

radiogroup.check(IdOfYourButton)

Por supuesto, primero hay que establecer un ID para sus botones de radio

edición: i olvidaba, radioButton.getId() funciona tan bien, thx Ramesh

+32

o si no desea identificar su 'RadioButton' y conoce el índice que puede usar ** ((RadioButton) radioGroup.getChildAt (INDEX)). SetChecked (verdadero); ** –

+16

No debe hacer eso . Eso causará el problema "setChecked" descrito en esta pregunta. Por supuesto, hay formas de hacerlo sin los ids de sus botones, pero no use 'setChecked()' Una forma sería 'radiogroup.check (((RadioButton) radioGroup.getChildAt (INDEX)). getId()) 'o algo así – Sprigg

+0

bueno para no olvidar agregar el botón de opción al grupo de botones de opción _antes de llamar al grupo.check (button.getId()) – tom

18
RadioGroup radioGroup = new RadioGroup(WvActivity.this); 
    RadioButton radioBtn1 = new RadioButton(this); 
    RadioButton radioBtn2 = new RadioButton(this); 
    RadioButton radioBtn3 = new RadioButton(this); 

    radioBtn1.setText("Less"); 
    radioBtn2.setText("Normal"); 
    radioBtn3.setText("More"); 


    radioGroup.addView(radioBtn1); 
    radioGroup.addView(radioBtn2); 
    radioGroup.addView(radioBtn3); 

    radioGroup.check(radioBtn2.getId()); 
4

Hubo el mismo problema en el código de mi colega. Esto suena como que su grupo de radio no está configurado correctamente con sus botones de radio. Esta es la razón por la que puede seleccionar múltiples veces los botones de radio. Probé muchas cosas, finalmente hice un truco que está mal en realidad, pero funciona bien.

for (int i = 0 ; i < myCount ; i++) 
{ 
    if (i != k) 
    { 
     System.out.println ("i = " + i); 
     radio1[i].setChecked(false); 
    } 
} 

Aquí configuré uno para el bucle, que busca los botones de opción disponibles y los selecciona todos menos el nuevo clickeado. intentalo.

6
RadioGroup radioGroup = new RadioGroup(context); 
RadioButton radioBtn1 = new RadioButton(context); 
RadioButton radioBtn2 = new RadioButton(context); 
RadioButton radioBtn3 = new RadioButton(context); 

radioBtn1.setText("Less"); 
radioBtn2.setText("Normal"); 
radioBtn3.setText("More"); 

radioGroup.addView(radioBtn1); 
radioGroup.addView(radioBtn2); 
radioGroup.addView(radioBtn3); 
radioBtn2.setChecked(true); 
+0

Lo importante es usar 'setChecked()' después de que se hayan agregado todos los botones de radio al grupo de radio. Entonces, 'radioGroup.check (radioBtn2.getId())' no es necesario –

93

En caso de xml atribuyen su android:checkedButton que toma la id de la RadioButton a comprobar.

<RadioGroup 
... 
... 
android:checkedButton="@+id/IdOfTheRadioButtonInsideThatTobeChecked" 
... >....</RadioGroup> 
34

En el archivo XML defina el campo android:checkedButton en su RadioGroup, con el identificador de su incumplimiento RadioButton:

<RadioGroup 
    .... 
    android:checkedButton="@+id/button_1"> 

    <RadioButton 
     android:id="@+id/button_1" 
     ...../> 

    <RadioButton 
     android:id="@+id/button_2" 
     ...../> 

    <RadioButton 
     android:id="@+id/button_3" 
     ...../> 
</RadioGroup> 
0

Es un error de RadioGroup

RadioButton radioBtn2 = new RadioButton(context); 

radioBtn2 sin viewId, y generateViewId está en onChildViewAdded()

public void onChildViewAdded(View parent, View child) { 
    if (parent == RadioGroup.this && child instanceof RadioButton) { 
     int id = child.getId(); 
     // generates an id if it's missing 
     if (id == View.NO_ID) { 
      id = View.generateViewId(); 
      child.setId(id); 
     } 
     ((RadioButton) child).setOnCheckedChangeWidgetListener(
       mChildOnCheckedChangeListener); 
    } 

    if (mOnHierarchyChangeListener != null) { 
     mOnHierarchyChangeListener.onChildViewAdded(parent, child); 
    } 
} 

entonces, primero radioGroup.addView (radioBtn2), luego radioBtn2.setChecked (true);

De esta manera:

RadioGroup radioGroup = new RadioGroup(context); 
RadioButton radioBtn1 = new RadioButton(context); 
RadioButton radioBtn2 = new RadioButton(context); 
RadioButton radioBtn3 = new RadioButton(context); 

radioBtn1.setText("Less"); 
radioBtn2.setText("Normal"); 
radioBtn3.setText("More"); 

radioGroup.addView(radioBtn1); 
radioGroup.addView(radioBtn2); 
radioGroup.addView(radioBtn3); 

radioBtn2.setChecked(true); 
0

Añadir android:checked = "true" en su activity.xml

Cuestiones relacionadas