j'ai récemment intégré butterknife dans mon Android, et maintenant j'essaie d'utiliser l'annotation @OnCheckedChanged pour le radiogroupe. mais j'obtiens une erreur de non-rappel. ou celui-ci est pour radiobutton uniquement et non pour radiogroup.
@OnCheckedChanged(R.id.gendergroupid)
void onGenderSelected(RadioGroup group, int checkedId){
switch(checkedId){
case R.id.maleid:
maleid.setEnabled(true);
maleid.setChecked(true);
break;
case R.id.femaleid:
femaleid.setEnabled(true);
femaleid.setChecked(true);
break;
case R.id.bothid:
bothid.setEnabled(true);
bothid.setChecked(true);
break;
}
}
Me donne une erreur
BloError: (89, 10) erreur: impossible de faire correspondre les arguments de la méthode @OnCheckedChanged.
Paramètre n ° 1: Android.widget.RadioGroup ne correspond à aucun paramètre d'écoute
Paramètre n ° 2: int ne correspond à aucun paramètre d'écoute
Les méthodes peuvent avoir jusqu'à 2 paramètre (s):
Android.widget.CompoundButton booléen
Ceux-ci peuvent être répertoriés dans n'importe quel ordre, mais seront recherchés de haut en bas.
Selon la spécification, cette annotation doit être utilisée avec 2 paramètres, un CompoundButton
et un boolean
, donc si vous voulez vraiment utiliser cet écouteur, vous devez le changer comme ceci:
@OnCheckedChanged(R.id.gendergroupid)
void onGenderSelected(CompoundButton button, boolean checked) {
//do your stuff.
}
Je pense que dans votre cas, cet écouteur ne fonctionne pas, vous pouvez donc utiliser une autre implémentation comme:
@OnClick({R.id.radio_1, R.id.radio_2})
public void onRadioButtonClicked(RadioButton radioButton) {
// Is the button now checked?
boolean checked = radioButton.isChecked();
// Check which radio button was clicked
switch (radioButton.getId()) {
case R.id.radio_1:
if (checked) {
// 1 clicked
}
break;
case R.id.radio_2:
if (checked) {
// 2 clicked
}
break;
}
}
cela a fonctionné pour moi
@OnCheckedChanged({R.id.radio_button1, R.id.radio_button2})
public void onRadioButtonCheckChanged(CompoundButton button, boolean checked) {
if(checked) {
switch (button.getId()) {
case R.id.radio_button1:
// do stuff
break;
case R.id.radio_button2:
// do stuff
break;
}
}
}