web-dev-qa-db-ja.com

ラジオボタンをオフまたはリセットするにはどうすればよいですか?

Android domain ..

クイズベースのアプリを開発しています。ユーザーがこのアプリのラジオボタンを開くと、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
              }
             });

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)

私はこのようにしてみますが、チェックを外すことはできません。

23
Make it Simple

問題はwith btn_practicerg objectです。つまり、新しい質問を表示するたびに新しいRadioGroupオブジェクトを作成する場合、実行する必要がありますRadioGroup.clearCheck() on- 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);

最初のすべてのボタンをオフにします。これで問題が解決することを願っています。

17
Arjun Vekariya

すべてのボタンをRadioGroupに配置し、それらをすべてクリアする必要がある場合は、RadioGroup.clearCheck();を使用します

47

これを試してください、同じ問題はこの解決策で解決されました:

  1. onclickメソッドを4つのラジオボタンすべてに設定しますradio1Clickedradio2Clickedなど
  2. それぞれの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);
    }
    
  3. 残りのラジオボタンについても同様に行います。これで問題が解決することを願っています。

ソリューションに関するご質問はお気軽にお問い合わせください。

3
user2823274

すべてをグループに入れてから、次を使用します。

buttonGroup1.clearSelection();
2
Haqq Nuru

ラジオボタンは1つしかなく、ラジオボタングループを作成したくありませんでした。基本的にラジオボタンを追加し、テキストを空のままにし、その隣に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())....
1
Prateek

ラジオボタンがラジオグループに属している場合、そのボタンのみをプログラムでチェック解除することはできません。そのため、最初にすべてのメソッドを解除する必要があります。

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

そして、メソッドを呼び出す必要があります。

0
Raul Cervera