Android 如何取消选中或重置单选按钮?

Android 如何取消选中或重置单选按钮?,android,radio-button,Android,Radio Button,我正在开发一个基于测验的应用程序。当用户打开此应用程序时,将有1个问题和4个选项(单选按钮),单选按钮将被取消选中,但当用户回答1个任务时,问题就会出现,当用户开始下一个任务时,单选按钮将被选中。我想取消选中/重置每个问题的单选按钮。我怎么做 answ1=new ArrayList<String>(new ArrayList<String>(answ1)); btn_practice1.setText(answ1.get(0)); bt

我正在开发一个基于测验的应用程序。当用户打开此应用程序时,将有1个问题和4个选项(单选按钮),单选按钮将被取消选中,但当用户回答1个任务时,问题就会出现,当用户开始下一个任务时,单选按钮将被选中。我想取消选中/重置每个问题的单选按钮。我怎么做

  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
              }
             });

我试着这样做,但我无法取消选中..

将所有按钮放在
RadioGroup
中,然后在需要清除它们时使用
RadioGroup.clearCheck()

我认为问题出在btn\U practicerg对象上,即如果每次显示新问题时都要创建新的RadioGroup对象,则必须在新的btn\U practicerg对象上执行RadioGroup.clearCheck(),而不是我认为您当前正在执行的旧对象

更好的是:

    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);
取消选中开头的所有按钮。
我希望这能解决你的问题。

试试这一个,同样的问题用这个解决方案解决了:

  • 将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);
    }
    
  • 其他单选按钮也一样。 希望这能解决你的问题


  • 请随时询问有关解决方案的任何问题。

    我只有一个单选按钮,我真的不想创建单选按钮组。基本上,我添加了一个单选按钮,然后将文本留空,在旁边添加了checkedTextView(重叠),然后将checkedTextView的onClick函数链接到一个切换函数->

    public void toggle(View view)
    { 
        if(checkedTextView.isChecked())
        { 
            checkedTextView.setChecked(false); 
            actualRadioBtn.setChecked(false);
        }
        else
        {
            checkedTextView.setChecked(true);
            actualRadioBtn.setChecked(true);
        }
    }
    
    然后在您的功能中,检查是否选中了该单选按钮,您只需使用

    if(actualRadioBtn.isChecked())....
    

    将所有内容放在一个组中,然后使用:

    buttonGroup1.clearSelection();
    

    如果Radiobutton属于一个radiogroup,您永远无法通过编程单独取消选中该按钮,因此您必须先执行一个方法取消选中所有按钮

        public void unchecked()
         {
         RadioGroup x=findViewById(R.id.NameOfRadiogroup);
         x.clearCheck();
         }  
    

    然后你必须调用这个方法。

    我想你真的需要使用无线电组,如果你先检查链接,你应该考虑使用一个无线电组来避免“取消”他们的手册。只有我使用的无线电组,BTNI实践它在我的代码中唯一的无线电组…它不检查,但有一个问题,在第一个问题中,我选择选项1表示相同的选项1,如果在第二个任务中选择,则其不标记或不选择,如果我选择其他选项,则其选择…这应该是可接受的答案,因为它减少了样板代码并提高了可读性。这在清除单选组的选中单选按钮时会出现空指针异常。注意:clearCheck()一次呼叫更改两次。请查看此最佳答案lol
        public void unchecked()
         {
         RadioGroup x=findViewById(R.id.NameOfRadiogroup);
         x.clearCheck();
         }