web-dev-qa-db-fra.com

comment définir le bouton radio coché par défaut dans le radiogroupe avec Android

J'ai créé RadioGroup et RadioButton dynamiquement comme suit

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

Ici, l'étape radioBtn2.setChecked(true); provoque radioBtn2 toujours vérifié. Cela signifie que je ne peux pas décocher radioBtn2 en cochant les deux autres boutons radio (radioBtn1, radioBtn3). Je veux faire en sorte que RadioGroup puisse cocher un seul bouton radio à la fois (il peut maintenant vérifier deux boutons radio à la fois). Comment puis-je résoudre ce problème?

118
Sandy

vous devriez vérifier le radiobutton dans le radiogroupe comme ceci:

radiogroup.check(IdOfYourButton)

Bien sûr, vous devez d’abord définir un identifiant pour vos boutons radio.

EDIT: j’ai oublié, radioButton.getId() fonctionne également, merci à Ramesh

EDIT2:

Android:checkedButton="@+id/my_radiobtn"

fonctionne en radiogroupe xml

199
Sprigg

Dans le cas de l'attribut xml, c'est Android:checkedButton qui vérifie la id de la RadioButton.

<RadioGroup
...
...
Android:checkedButton="@+id/IdOfTheRadioButtonInsideThatTobeChecked"
... >....</RadioGroup>
106
IronBlossom

Dans le fichier XML, définissez le champ Android:checkedButton dans votre RadioGroup, avec l'id de votre valeur par défaut 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>
48
Sara
    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());
19
Ramesh Solanki
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);
6
Anuj Oscar

Il y avait le même problème dans le code de mon collègue. Cela sonne comme votre groupe de radio n'est pas correctement configuré avec vos boutons radio. C'est la raison pour laquelle vous pouvez sélectionner plusieurs boutons radio. J'ai essayé beaucoup de choses, finalement j'ai fait un tour qui est faux en fait, mais ça fonctionne bien. 

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

Ici, je mets une boucle pour, qui vérifie les boutons radio disponibles et désélectionne tous les boutons sauf le nouveau cliqué. l'essayer.

3
Lucifer

Ajoutez Android:checked = "true" dans votre activity.xml

2
Leotrim Vojvoda

C'est un bug de RadioGroup

RadioButton radioBtn2 = new RadioButton(context);

radioBtn2 sans viewId, et generateViewId est dans 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);
    }
}

oui, d'abord radioGroup.addView (radioBtn2), puis radioBtn2.setChecked (true); 

Comme ça:

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
qinmiao