webentwicklung-frage-antwort-db.com.de

wie kann ich das Optionsfeld deaktivieren oder zurücksetzen?

Ich bin neu bei Android Domain ..

Ich entwickle eine Quiz-basierte App. Es gibt 1 Frage und 4 Optionen (Optionsfelder), wenn der Benutzer dieses App-Optionsfeld öffnet. Das Kontrollkästchen wird jedoch deaktiviert, wenn der Benutzer 1 Quest beantwortet und wenn er zur nächsten Quest geht. Setzen Sie die Optionsfelder für jede Frage zurück. Wie kann ich das tun?

Danke im Voraus...

  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)

Ich versuche es so, aber ich kann es nicht deaktivieren.

19
Make it Simple

Ich denke, das Problem ist mit btn_practicerg object, dh wenn Sie jedes Mal, wenn Sie eine neue Frage anzeigen, ein neues RadioGroup-Objekt erstellen, müssen Sie stattdessen RadioGroup.clearCheck () on new btn_practicerg object ausführen alte, die ich glaube, dass Sie derzeit tun.

Noch besser:

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

deaktivieren Sie alle Schaltflächen am Anfang. Ich hoffe, das wird Ihr Problem lösen.

17
Arjun Vekariya

Setzen Sie alle Ihre Schaltflächen in eine RadioGroup. Wenn Sie sie löschen müssen, verwenden Sie RadioGroup.clearCheck();

42

Versuchen Sie es mit dem gleichen Problem, das mit dieser Lösung gelöst wurde:

  1. setzen Sie die Onclick-Methode auf alle 4 Radiobuttons, beispielsweise radio1Clicked, radio2Clicked usw.
  2. fügen Sie in der jeweiligen Onclick-Methode den folgenden Code hinzu:

    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. tun Sie ebenso für verbleibende Radiobuttons . Hoffen Sie, dass dies Ihr Problem lösen wird.

Bitte zögern Sie nicht, Fragen zur Lösung zu stellen.

3
user2823274

Ich hatte nur einen Radioknopf und wollte wirklich keine Radioknopfgruppe bilden. Im Grunde habe ich ein Optionsfeld hinzugefügt, dann den Text leer gelassen, daneben das checkedTextView eingefügt (überlappend) und die OnClick-Funktion des checkedTextView mit einer Toggle-Funktion verknüpft -> 

public void toggle(View view)
{ 
    if(checkedTextView.isChecked())
    { 
        checkedTextView.setChecked(false); 
        actualRadioBtn.setChecked(false);
    }
    else
    {
        checkedTextView.setChecked(true);
        actualRadioBtn.setChecked(true);
    }
}

Dann können Sie in Ihrer Funktion, in der Sie überprüfen, ob dieses Optionsfeld ausgewählt ist, einfach verwenden 

if(actualRadioBtn.isChecked())....
1
Prateek

wenn der Radiobutton zu einer Radiogruppe gehört, können Sie die Schaltfläche NIEMALS allein programmgesteuert deaktivieren, so dass Sie zuerst eine Methode zum Deaktivieren aller Optionen ausführen müssen.

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

und dann müssen Sie die Methode aufrufen.

0
Raul Cervera

Setze alle in eine Gruppe und benutze dann:

buttonGroup1.clearSelection();
0
Haqq Nuru