Je suis nouveau sur le domaine Android ..
Je développe une application basée sur quiz. Il y aura 1 question et 4 options (boutons radio) lorsque l'utilisateur ouvrira ce bouton radio de l'application sera décoché, mais le problème surviendra lorsque l'utilisateur aura répondu à 1 quête et qu'il passera à la case suivante. réinitialiser les boutons radio pour chaque question. Comment puis-je le faire?
Merci d'avance...
answ1=new ArrayList<String>(new ArrayList<String>(answ1));
btn_practice1.setText(answ1.get(0));
btn_practice2.setText(answ1.get(1));
btn_practice3.setText(answ1.get(2));
btn_practice4.setText(answ1.get(3));
btn_practicerg.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton radioButton = (RadioButton)group. findViewById(checkedId); //line 262
String temp = radioButton.getText().toString();
switch(btn_practicerg.getCheckedRadioButtonId()){
case R.id.RB1:
if (btn_practice1.isChecked()){
btn_practice2.setChecked(false);
btn_practice3.setChecked(false);
btn_practice4.setChecked(false);
}
break;
case R.id.RB2:
if (btn_practice2.isChecked()){
btn_practice1.setChecked(false);
btn_practice3.setChecked(false);
btn_practice4.setChecked(false);
}
break;
case R.id.RB3:
if (btn_practice3.isChecked()){
btn_practice1.setChecked(false);
btn_practice2.setChecked(false);
btn_practice4.setChecked(false);
}
break;
case R.id.RB4:
if (btn_practice4.isChecked()){
btn_practice1.setChecked(false);
btn_practice2.setChecked(false);
btn_practice3.setChecked(false);
}
break;
default:
btn_practice1.setChecked(false);
btn_practice2.setChecked(false);
btn_practice3.setChecked(false);
btn_practice4.setChecked(false);
}
ImageView nextBtn = (ImageView) findViewById(R.id.nxt_btn);
nextBtn.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
btn_practicerg.clearCheck(); //line 355
}
});
Logcat
E/AndroidRuntime(729):at
com.example.TEENEINSTIEN.Question$LoadQuestions$2.onCheckedChanged(Question.Java:262)
E/AndroidRuntime(729):at Android.widget.RadioGroup.setCheckedId(RadioGroup.Java:172)
E/AndroidRuntime(729):at Android.widget.RadioGroup.check(RadioGroup.Java:166)
E/AndroidRuntime(729):at Android.widget.RadioGroup.clearCheck(RadioGroup.Java:205)
E/AndroidRuntime(729):at
com.example.TEENEINSTIEN.Question$LoadQuestions$3.onClick(Question.Java:355)
E/AndroidRuntime(729):at Android.view.View.performClick(View.Java:2485)
E/AndroidRuntime(729):at Android.view.View$PerformClick.run(View.Java:9080)
J'essaie comme ça, mais je ne peux pas décocher ..
Je pense que le problème est avec btn_practicerg object, c’est-à-dire que si vous créez un nouvel objet RadioGroup chaque fois que vous affichez une nouvelle question, vous devez exécuter RadioGroup.clearCheck () on new btn_practicerg object au lieu de ancien que je pense que vous faites actuellement.
Encore mieux:
btn_practice1.setText(answ1.get(0));
btn_practice2.setText(answ1.get(1));
btn_practice3.setText(answ1.get(2));
btn_practice4.setText(answ1.get(3));
btn_practice1.setChecked(false);
btn_practice2.setChecked(false);
btn_practice3.setChecked(false);
btn_practice4.setChecked(false);
pour décocher tous les boutons au début ... J'espère que cela résoudra votre problème.
Mettez tous vos boutons dans une RadioGroup
puis quand vous avez besoin de les effacer, utilisez RadioGroup.clearCheck();
Essayez celui-ci, le même problème a été résolu avec cette solution:
radio1Clicked
, radio2Clicked
et ainsi de suitedans la méthode onclick respective, ajoutez le code ci-dessous:
public void radio1Clicked(View view)
{
// Note that I have unchecked radiobuttons except the one
// which is clicked/checked by user
radio2Button.setChecked(false);
radio3Button.setChecked(false);
radio4Button.setChecked(false);
}
simillarly faire pour les radiobuttons restants . J'espère que cela résoudra votre problème.
S'il vous plaît n'hésitez pas à poser des questions sur la solution.
Je n'avais qu'un bouton radio et je ne voulais vraiment pas créer un groupe de boutons radio. Donc, en gros, j’ai ajouté un bouton radio, puis laissé le texte vide, ajouté le tickTextView à côté (chevauchement), puis lié la fonction onClick de cet objet à une fonction de basculement ->
public void toggle(View view)
{
if(checkedTextView.isChecked())
{
checkedTextView.setChecked(false);
actualRadioBtn.setChecked(false);
}
else
{
checkedTextView.setChecked(true);
actualRadioBtn.setChecked(true);
}
}
Ensuite, dans votre fonction où vous vérifiez si ce bouton radio est sélectionné, vous pouvez simplement utiliser
if(actualRadioBtn.isChecked())....
si le radiobutton appartient à un radiogroupe, vous ne pouvez JAMAIS décocher ce bouton par programmation, vous devez donc utiliser une méthode pour décocher tout d'abord.
public void unchecked()
{
RadioGroup x=findViewById(R.id.NameOfRadiogroup);
x.clearCheck();
}
et ensuite vous devez appeler la méthode.
Mettez tous dans un groupe, puis utilisez:
buttonGroup1.clearSelection();