¿Cómo configurar el botón de opción marcado como predeterminado en el grupo de radio?

4 minutos de lectura

avatar de usuario
Arenoso

Yo he creado RadioGroup y RadioButton dinámicamente de la siguiente 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");

                    radioBtn2.setChecked(true);

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

Aquí paso radioBtn2.setChecked(true); causas radioBtn2 siempre comprobado. Eso significa que no puedo desmarcar radioBtn2 marcando otros dos botones de radio (radioBtn1,radioBtn3). quiero hacer eso RadioGroup puede marcar solo un botón de radio a la vez (ahora puede marcar dos botones de radio a la vez).

¿Como puedó resolver esté problema?

  • ¿Hay algo que necesites dinámicamente?

    – vk capucha

    7 de febrero de 2012 a las 11:56

avatar de usuario
ramita

debe verificar el botón de radio en el grupo de radio de esta manera:

radiogroup.check(IdOfYourButton)

Por supuesto, primero debe establecer una identificación para sus botones de radio

EDITAR: lo olvidé, radioButton.getId() funciona también, gracias Ramesh

EDIT2:

android:checkedButton="@+id/my_radiobtn"

funciona en radiogroup xml

  • o si no quieres identificar tu RadioButton y sabes el índice que puedes usar ((RadioButton)radioGroup.getChildAt(INDEX)).setChecked(true);

    – Ahmad Kayyali

    29 de abril de 2013 a las 12:32


  • No deberías hacer eso. Eso causará el problema “setChecked” descrito en esta pregunta. Por supuesto, hay formas de hacerlo sin las identificaciones de sus botones, pero no use setChecked() Una forma sería radiogroup.check(((RadioButton)radioGroup.getChildAt(INDEX)).getId()) o algo así

    – Ramita

    29 de abril de 2013 a las 13:05

  • es bueno no olvidar agregar el botón de opción al grupo de botones de opción antes de llamando al grupo.check(button.getId())

    – Tomás

    2 mayo 2016 a las 14:23

  • Tuve que hacerlo de esta manera: radioGroup.Check(radioGroup.GetChildAt(0).Id); para usuarios de Xamarin.Android

    – Mario Galvan

    19 mayo 2016 a las 16:12

En caso de que el atributo xml sea android:checkedButton que toma el id del RadioButton Por verificar.

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

avatar de usuario
Sara

En el archivo XML establezca el android:checkedButton campo en tu RadioGroupcon la identificación de su defecto 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>

    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());

avatar de usuario
anuj oscar

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);

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

    – Hartmut Pfitzinger

    27/03/2014 a las 20:34


avatar de usuario
Lucifer

Hubo el mismo problema en el código de mi colega. Esto suena porque su grupo de radio no está configurado correctamente con sus botones de radio. Esta es la razón por la que puede seleccionar varios botones de radio. Intenté muchas cosas, finalmente hice un truco que en realidad está mal, 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 bucle, que verifica los botones de opción disponibles y anula la selección de todos excepto el nuevo en el que se hizo clic. intentalo.

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

    – Hartmut Pfitzinger

    27/03/2014 a las 20:34


avatar de usuario
qinmiao

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);

Como esto:

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);

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad