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?
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
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>
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>
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());
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);
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.
Ajoutez Android:checked = "true"
dans votre activity.xml
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);