Как я могу снять флажок или 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);
    }
    
  • аналогично делать для остальных радиообъектов. Надеюсь, это решит вашу проблему.

Пожалуйста, не стесняйтесь задавать любые вопросы относительно решения.