web-dev-qa-db-fra.com

RadioGroup: comment vérifier par programmation

Je crée un RadioGroup à partir de XML

    <RadioGroup Android:id="@+id/option" 
        Android:layout_width="match_parent"
        Android:orientation="horizontal" 
        Android:checkedButton="@+id/block_scenario_off"
        Android:layout_height="wrap_content">
        <RadioButton 
            Android:layout_width="0dip"
            Android:layout_weight="1" 
            Android:text="@string/option1" 
            Android:layout_height="wrap_content" 
            Android:id="@+id/option1"
            Android:layout_gravity="center|left" 
            Android:onClick="@string/on_click"/>
        <RadioButton 
            Android:layout_width="0dip"
            Android:layout_weight="1" 
            Android:text="@string/option2" 
            Android:onClick="@string/on_click"
            Android:layout_height="wrap_content"
            Android:layout_gravity="center" 
            Android:id="@+id/option2"/>
        <RadioButton 
            Android:layout_width="0dip"
            Android:layout_weight="1" 
            Android:text="@string/option3"
            Android:onClick="@string/on_click" 
            Android:layout_height="wrap_content"
            Android:layout_gravity="center|right" 
            Android:id="@+id/option3" />
    </RadioGroup>

Dans Java code, je vérifie par programmation le premier sur la création d'activité (onCreate ()) comme suit:

    mOption = (RadioGroup) findViewById(R.id.option);
    mOption.check(R.id.option1);

Mais lorsque l'activité est affichée, aucun bouton radio n'est coché. De l'aide?

44
Bao Le

Dans votre mise en page, vous pouvez ajouter Android:checked="true" À CheckBox que vous souhaitez sélectionner.

Ou par programme, vous pouvez utiliser la méthode setChecked définie dans l'interface vérifiable:

RadioButton b = (RadioButton) findViewById(R.id.option1); b.setChecked(true);

62
Blackbelt

essayez ceci si vous voulez que votre bouton radio soit vérifié en fonction de la valeur d'une variable, par ex. "genderStr", vous pouvez utiliser l'extrait de code suivant

    if(genderStr.equals("Male"))
       genderRG.check(R.id.maleRB);
    else 
       genderRG.check(R.id.femaleRB);
32
Shashank Degloorkar

Vous devrez peut-être déclarer les boutons radio dans la méthode onCreate de votre code et les utiliser.

RadioButton rb1 = (RadioButton) findViewById(R.id.option1);
rb1.setChecked(true);
25
vik

Fais attention! vérifier le radiobutton avec setChecked() ne change pas l'état à l'intérieur du RadioGroup. Par exemple, cette méthode de radioGroup renvoie un résultat incorrect: getCheckedRadioButtonId().

Vérifiez toujours le groupe radio avec

mOption.check(R.id.option1);

tu as été prévenu ;)

18
AndrewBloom

Attrapez le groupe radio et regardez les enfants pour voir s'ils ne sont pas cochés.

RadioGroup rg = (RadioGroup) view;
int checked = savedInstanceState.getInt(wrap.getAttributeName());

if(checked != -1) {
    RadioButton btn = (RadioButton) rg.getChildAt(checked);
    btn.toggle();
}
13
Mateusz Mazur

Vous pouvez également utiliser la méthode getChildAt (). Comme ça:

mOption = (RadioGroup) findViewById(R.id.option);
((RadioButton)mOption.getChildAt(0)).setChecked(true);
12
Levor

J'utilise ce morceau de code tout en travaillant avec des index pour le groupe radio:

radioGroup.check(radioGroup.getChildAt(index).getId());
9
Seref Bulbul

cela fonctionnera si vous mettez votre mOption.check(R.id.option1); dans la méthode onAttachedToWindow ou comme ceci:

view.post(new Runnable()
{
    public void run() 
    {
        // TODO Auto-generated method stub
        mOption.check(R.id.option1); 
    }
});

la raison peut être que la méthode de vérification ne fonctionnera que lorsque le radiogroupe sera rendu.

8
david

J'utilise ce morceau de code tout en travaillant avec getId () pour le groupe radio:

radiogroup.check(radiogroup.getChildAt(0).getId());

définir la position selon votre conception de RadioGroup

j'espère que ceci vous aidera!

4