J'ai deux RadioButton
s dans un RadioGroup
. Je veux définir OnClickListener
sur ces RadioButton
s. En fonction du RadioButton
sur lequel vous avez cliqué, je souhaite modifier le texte d'un EditText
. Comment puis-je atteindre cet objectif?
Je pense qu'un meilleur moyen consiste à utiliser RadioGroup
et à définir le programme d'écoute en conséquence pour modifier et mettre à jour le paramètre View
en conséquence (vous évite ainsi d'avoir 2, 3, 4 écouteurs, etc.).
RadioGroup radioGroup = (RadioGroup) findViewById(R.id.yourRadioGroup);
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// checkedId is the RadioButton selected
}
});
J'espère que cela vous aidera...
RadioButton rb = (RadioButton) findViewById(R.id.yourFirstRadioButton);
rb.setOnClickListener(first_radio_listener);
et
OnClickListener first_radio_listener = new OnClickListener (){
public void onClick(View v) {
//Your Implementaions...
}
};
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
{
public void onCheckedChanged(RadioGroup group, int checkedId) {
// checkedId is the RadioButton selected
RadioButton rb=(RadioButton)findViewById(checkedId);
textViewChoice.setText("You Selected " + rb.getText());
//Toast.makeText(getApplicationContext(), rb.getText(), Toast.LENGTH_SHORT).show();
}
});
La question portait sur Détecter le bouton radio sur lequel l'utilisateur a cliqué, voici comment obtenir le bouton sur lequel vous avez cliqué
final RadioGroup radio = (RadioGroup) dialog.findViewById(R.id.radioGroup1);
radio.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
View radioButton = radio.findViewById(checkedId);
int index = radio.indexOfChild(radioButton);
// Add logic here
switch (index) {
case 0: // first button
Toast.makeText(getApplicationContext(), "Selected button number " + index, 500).show();
break;
case 1: // secondbutton
Toast.makeText(getApplicationContext(), "Selected button number " + index, 500).show();
break;
}
}
});
Vous pouvez également ajouter un auditeur à partir de la présentation XML: Android:onClick="onRadioButtonClicked"
dans votre balise <RadioButton/>
.
<RadioButton Android:id="@+id/radio_pirates"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@string/pirates"
Android:onClick="onRadioButtonClicked"/>
Voir Boutons SDK du développeur Android pour plus de détails.
Juste au cas où quelqu'un aurait du mal avec la réponse acceptée:
Il existe différentes interfaces OnCheckedChangeListener. J'ai ajouté au premier pour voir si une CheckBox avait été modifiée.
import Android.widget.CompoundButton.OnCheckedChangeListener;
contre
import Android.widget.RadioGroup.OnCheckedChangeListener;
En ajoutant l'extrait de code de Ricky, j'avais des erreurs:
La méthode setOnCheckedChangeListener (RadioGroup.OnCheckedChangeListener) dans le type RadioGroup n'est pas applicable pour les arguments (new CompoundButton.OnCheckedChangeListener () {})
Peut être corrigé avec la réponse de ALi:
new RadioGroup.OnCheckedChangeListener()
Puisque cette question n'est pas spécifique à Java, j'aimerais ajouter comment vous pouvez le faire dans Kotlin:
radio_group_id.setOnCheckedChangeListener({ radioGroup, optionId -> {
when (optionId) {
R.id.radio_button_1 -> {
// do something when radio button 1 is selected
}
// add more cases here to handle other buttons in the RadioGroup
}
}
})
Ici, radio_group_id
est le Android:id
attribué au groupe-radio concerné. Pour l'utiliser de cette manière, vous devez importer kotlinx.Android.synthetic.main.your_layout_name.*
dans le fichier Kotlin de votre activité. Notez également que si le paramètre radioGroup
lambda est inutilisé, il peut être remplacé par _
(trait de soulignement) depuis Kotlin 1.1.