2013-04-11 11 views
15

Sono nuovo del dominio Android ..Come posso deselezionare o ripristinare il pulsante di opzione?

Sto sviluppando un'applicazione basata sui quiz. Ci saranno 1 domanda e 4 opzioni (pulsanti radio) quando l'utente apre questa app il pulsante radio verrà deselezionato, ma il problema si presenta quando l'utente risponde a 1 ricerca e quando si reca per la prossima ricerca verrà selezionato il pulsante radio. Desiderio deselezionare/ripristinare i pulsanti di opzione per ogni domanda.Come posso farlo?

Grazie in anticipo ...

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) 

Mi provare come questo, ma non posso in grado di deselezionare ..

+1

penso davvero è necessario utilizzare RadioGroup se in modo da controllare i link http://developer.android.com/reference/android/widget/RadioGroup.html http : //stackoverflow.com/questions/6780981/android-radio-group-question –

+0

Prima di tutto, dovresti considerare l'utilizzo di un Rad ioGroup per evitare di doverli "deselezionare" manualmente. – damian

+0

Solo Gruppo Radio ho usato, btn_practicerg è il suo unico gruppo radio nel mio codice ... –

risposta

15

Penso che e problema è con btn_practicerg oggetto cioè se si sta creando nuovi ogni oggetto RadioGroup visualizzazione nuova domanda quindi è necessario eseguire RadioGroup.clearCheck() sulla nuova btn_practicerg oggetto invece di vecchio che penso si sta facendo attualmente.

e più bettrly fare il folliwing:

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

per deselezionare tutti i pulsanti in principio. Spero che questo risolverà il vostro problema ..

+1

La sua deselezione, ma un problema, nella prima domanda seleziono l'opzione1 significa la stessa opzione1 se si seleziona nella seconda ricerca non si contrassegna o non si seleziona se altre opzioni seleziono la sua selezione ... –

35

Mettete tutti i pulsanti in una RadioGroup quindi quando è necessario cancellarli tutti usano RadioGroup.clearCheck();

+1

Ho usato questo, genera errore. Non riesco a cancellare. vedi nel mio codice .. –

+0

hai visto il mio logcat..it genera un errore come questo .. –

+0

questa dovrebbe essere la risposta accettata in quanto riduce il codice di stam- pa e una leggibilità migliorata. –

2

Prova questo, lo stesso problema ma ho risolto con questa soluzione:

  1. set onclick metodo per tutti e 4 i radiobuttons dicono radio1Clicked, radio2Clicked & così via
  2. in rispettive metodo onclick aggiungere sottostante codice:

    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. simillarly fanno per radiob rimanente uttons. Spero che questo risolva il tuo problema.

Non esitate a fare qualsiasi domanda riguardante la soluzione.

+0

Non funziona in un adattatore .. – Sam

1

Avevo solo un pulsante di opzione e non volevo creare un gruppo di pulsanti di opzione. Il controllo onClick e if e else non funzionavano per controllarlo manualmente e deselezionarlo. Ho letto un paio di post con onRadioButtonClick ascoltatori ecc.

Per prima cosa ho provato a passare alla casella di controllo-> lo stesso problema. Poi ho provato CheckedTextView e cosa sai, ha funzionato come un interruttore.Quindi, in pratica ho aggiunto un pulsante di scelta poi a sinistra il testo vuota, ha aggiunto il checkedTextView accanto ad esso (sovrapposizione) poi legato la funzione onClick del checkedTextView a una funzione di commutazione ->

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

Poi nella funzione in cui si controlla se questo pulsante di opzione è selezionata si può semplicemente utilizzare

if(actualRadioBtn.isChecked()).... 
Problemi correlati