D'après ma compréhension, pour déterminer si une case à cocher est "cliquée" et savoir si elle est cochée ou non, un code tel que le suivant peut être utilisé:
cb=(CheckBox)findViewById(R.id.chkBox1);
cb.setOnCheckedChangeListener(this);
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
cb.setText("This checkbox is: checked");
}
else {
cb.setText("This checkbox is: unchecked");
}
}
Cependant, je ne suis pas en mesure d'élaborer la logique sur la façon de faire ce qui précède pour un radiogroupe.
Voici le xml de mon RadioGroup:
<RadioGroup Android:id="@+id/radioGroup1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content">
<RadioButton Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:id="@+id/radio1" Android:checked="true"
Android:text="RadioButton1">
</RadioButton>
<RadioButton Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:id="@+id/radio2" Android:text="RadioButton2" Android:checked="true">
</RadioButton>
<RadioButton Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:id="@+id/radio3" Android:text="RadioButton3">
</RadioButton>
</RadioGroup>
Question: Dois-je configurer un autre auditeur, ou l'auditeur déjà là "enregistrera-t-il" également ce groupe?
De plus, l'auditeur doit-il être configuré sur le RadioGroup ou le RadioButton?
Voici comment vous obtenez le bouton radio vérifié:
// This will get the radiogroup
RadioGroup rGroup = (RadioGroup)findViewById(r.id.radioGroup1);
// This will get the radiobutton in the radiogroup that is checked
RadioButton checkedRadioButton = (RadioButton)rGroup.findViewById(rGroup.getCheckedRadioButtonId());
Pour utiliser l'écouteur, vous procédez comme suit:
// This overrides the radiogroup onCheckListener
rGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
{
public void onCheckedChanged(RadioGroup group, int checkedId)
{
// This will get the radiobutton that has changed in its check state
RadioButton checkedRadioButton = (RadioButton)group.findViewById(checkedId);
// This puts the value (true/false) into the variable
boolean isChecked = checkedRadioButton.isChecked();
// If the radiobutton that has changed in check state is now checked...
if (isChecked)
{
// Changes the textview's text to "Checked: example radiobutton text"
tv.setText("Checked:" + checkedRadioButton.getText());
}
}
});
Ça devrait être quelque chose comme ça.
RadioGroup rb = (RadioGroup) findViewById(R.id.radioGroup1);
rb.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
}
}
});
Sur la base de l'ID vérifié, vous sauriez lequel des boutons radio a été cliqué, puis utilisez votre code ci-dessus pour déterminer s'il est coché ou décoché. Ce sont des devoirs. ;)
Utiliser Switch, c'est mieux:
radGrp.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup arg0, int id) {
switch (id) {
case -1:
Log.v(TAG, "Choices cleared!");
break;
case R.id.chRBtn:
Log.v(TAG, "Chose Chicken");
break;
case R.id.fishRBtn:
Log.v(TAG, "Chose Fish");
break;
case R.id.stkRBtn:
Log.v(TAG, "Chose Steak");
break;
default:
Log.v(TAG, "Huh?");
break;
}
}
});
//Within the Activity that hosts this layout, the following method handles the click event for both radio buttons:
public void onRadioButtonClicked(View view) {
// Is the button now checked?
boolean checked = ((RadioButton) view).isChecked();
// Check which radio button was clicked
switch(view.getId()) {
case R.id.radio_pirates:
if (checked)
// Pirates are the best
break;
case R.id.radio_ninjas:
if (checked)
// Ninjas rule
break;
}
}