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?
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);
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);
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);
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 ;)
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();
}
Vous pouvez également utiliser la méthode getChildAt (). Comme ça:
mOption = (RadioGroup) findViewById(R.id.option);
((RadioButton)mOption.getChildAt(0)).setChecked(true);
J'utilise ce morceau de code tout en travaillant avec des index pour le groupe radio:
radioGroup.check(radioGroup.getChildAt(index).getId());
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.
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!