Как я могу снять флажок или reset радиокнопку?
Я новичок в домене android..
Я разрабатываю приложение для викторины. Там будет один вопрос и 4 варианта (переключатели), когда пользователь откроет эту кнопку, будет отключена, но проблема возникает, когда пользователь отвечает на 1 квест и когда он отправляется на следующий квест-переключатель. Будет снята отметка / reset переключатели для каждого вопроса. Как я могу это сделать?
Спасибо заранее...
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)
Я пытаюсь сделать это, но я не могу снять отметку.
Ответы
Ответ 1
Я думаю, что проблема с объектом btn_practicerg, т.е. если вы создаете новый объект RadioGroup каждый раз при отображении нового вопроса, тогда вам нужно выполнить RadioGroup.clearCheck() в новом btn_practicerg вместо старого, который, я думаю, вы сейчас делаете.
и более того, выполните следующие действия:
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);
чтобы снять все кнопки в начале.
Я надеюсь, что это решит вашу проблему.
Ответ 2
Поместите все свои кнопки в RadioGroup
, затем, когда вам нужно их очистить, используйте RadioGroup.clearCheck();
Ответ 3
Попробуйте это, эта же проблема решена с помощью этого решения:
- установите метод onclick для всех 4-х радиокоманд, скажем
radio1Clicked
, radio2Clicked
и т.д.
-
в соответствующем методе onclick добавьте ниже код:
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);
}
-
аналогично делать для остальных радиообъектов.
Надеюсь, это решит вашу проблему.
Пожалуйста, не стесняйтесь задавать любые вопросы относительно решения.