2012-10-30 17 views
7

Ho due pulsanti di opzione e 5 caselle di controllo nella mia app Android. e anche un pulsante Salva. Quando l'utente fa clic sul pulsante Salva, è necessario deselezionare le caselle di controllo selezionate dall'utente. Ho provato con il seguente codice. Ma non funziona.Come deselezionare una casella di controllo Android selezionata

if (chkOthers.isChecked()) 
    chkOthers.setChecked(false); 
    chkOthers.setSelected(false); 
} 
+1

Qual è il contesto di quello snippet? È troppo breve per essere utile. – Tim

+1

Esegui, if (chkOthers.isChecked()) { chkOthers.performClick(); } Questo eseguirà la normale operazione di clic sulla casella di controllo, che eseguirà anche onClickListener(), quindi usarlo saggiamente – Hardik4560

risposta

4

Se si desidera utilizzare le caselle di controllo per questo, è possibile impostare un'onItemClickListener su entrambe le caselle di controllo e la necessità di deselezionare altro nella onItemClick() metodo. Un esempio potrebbe essere simile a questo: -

CheckBox cb1,cb2; 
//Considering you can initialize the above variables 
cb1.setOnCheckedChangeListener(new OnCheckedChangeListener{ 
    onCheckedChanged (CompoundButton view, boolean isChecked){ 
     cb2.setChecked(false); 
    } 
}); 
cb2.setOnCheckedChangeListener(new OnCheckedChangeListener{ 
    onCheckedChanged (CompoundButton view, boolean isChecked){ 
     cb1.setChecked(false); 
    } 
}); 

Vorrei raccomandare che si dovrebbe usare i pulsanti di scelta per questo comportamento in quanto sono dotati di questa funzionalità costruito in fin dall'inizio.

10

Basta usare chk1.toggle() onClick del pulsante per deselezionare quelli selezionati.

public class TestCheckBoxActivity extends Activity { 
    /** Called when the activity is first created. */ 
    CheckBox chk1, chk2; 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     chk1 = (CheckBox)findViewById(R.id.checkBox1); 
     chk2 = (CheckBox)findViewById(R.id.checkBox2); 

     Button btn = (Button)findViewById(R.id.button1); 

     btn.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      if(chk1.isChecked()){ 
       chk1.toggle(); 
      } 

      if(chk2.isChecked()){ 
       chk2.toggle(); 
      } 

     } 
    }); 
     } 
} 
Problemi correlati