J'écris une Activity
dans Android où j'ai deux boutons radio sous un groupe RadioGroup. L'un d'eux est coché par défaut. Mais je ne peux pas déclencher l'événement avec la méthode onCreate
pour pouvoir y faire quelque chose. La onCheckedChanged
fonctionne correctement lorsque vous cliquez dessus.
RadioGroup ItemtypeGroup = (RadioGroup) findViewById(R.id.rechargeItemtype);
RadioButton providerRadio = (RadioButton) findViewById(R.id.a);
providerRadio.performClick();
ItemtypeGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged (RadioGroup group,int checkedId){
Log.d("chk", "id" + checkedId);
if (checkedId == R.id.a) {
//some code
} else if (checkedId == R.id.b) {
//some code
}
}
});
Pour activer une case à cocher pour la radio par défaut lors de l’initialisation. Définissez tout comme décochée avec la méthode clearCheck, puis définissez le gestionnaire, puis définissez la valeur par défaut et votre gestionnaire se déclenchera.
itemtypeGroup.clearCheck();
puis comme d'habitude, ajoutez un auditeur ...
itemtypeGroup
.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
Log.d("chk", "id" + checkedId);
if (checkedId == R.id.a) {
//some code
} else if (checkedId == R.id.b) {
//some code
}
}
});
Puis cochez le bouton radio par défaut et votre auditeur se déclenchera.
rb = (RadioButton) view.findViewById(R.id.a);
rb.setChecked(true);
Bonne chance
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checkedId == R.id.radioButton1) {
//do work when radioButton1 is active
} else if (checkedId == R.id.radioButton2) {
//do work when radioButton2 is active
} else if (checkedId == R.id.radioButton3) {
//do work when radioButton3 is active
}
}
});
cela fonctionne pour moi. l'espoir est utile
Essayez ce code.
Déclarez ce code dans votre méthode onCreate.
RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radiogroup);
radioGroup.clearCheck();
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton rb = (RadioButton) group.findViewById(checkedId);
if (null != rb && checkedId > -1) {
// checkedId is the RadioButton selected
switch (checkedId) {
case R.id.one:
// Do Something
break;
case R.id.two:
// Do Something
break;
case R.id.three:
// Do Something
break;
}
}
}
});
J'espère que cela t'aides.
Le problème vient du fait que vous définissez OnCheckedChangeListener
on RadioGroup
après l'appel providerRadio.performClick();
de la méthode .
C'est pourquoi, lorsque la méthode providerRadio.performClick();
s'exécute jusqu'à ce que leur OnCheckedChangeListener
ne soit pas disponible. Donc, pour que cela fonctionne, vous devez définir Listener avant l'appel à la méthode performClick()
.
Et au lieu d’utiliser RadioButton.performClick()
, vous devez utiliser la méthode RadioGroup.check()
pour modifier la RadioButton
cochée en cours.
Vous pouvez donc utiliser ce code pour changer la sélection actuelle de RadioGroup
RadioGroup ItemtypeGroup = (RadioGroup) findViewById(R.id.rechargeItemtype);
ItemtypeGroup
.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
Log.d("chk", "id" + checkedId);
if (checkedId == R.id.a) {
//some code
} else if (checkedId == R.id.b) {
//some code
}
}
});
ItemtypeGroup.check(R.id.a);
Remarque : - Assurez-vous d'appeler la méthode RadioGroup.check()
après avoir ajouté OnCheckedChangeListener
comme ci-dessus dans l'extrait de code.
J'imagine que vous effectuez un clic avant de définir le programme d'écoute du groupe, c'est pourquoi l'événement n'est pas déclenché.