2011-05-09 15 views
8

Ho un ToggleButton definita in questo modo:Come modificare lo stato di ToggleButton in modo programmatico?

<ToggleButton android:text="ToggleButton" android:id="@+id/toggle" 
    android:layout_height="wrap_content" android:layout_width="fill_parent"></ToggleButton> 

e voglio cambiare il suo stato di programmazione. Ho provato a utilizzare i metodi setChecked e toggle, ma nessuno di questi funziona nella mia situazione.

Ho una notifica in corso e quando la mia attività riceve l'intento di notifica, il pulsante di attivazione deve essere impostato su non selezionato, ma non funziona.

Lo sto facendo su onResume dell'attività. Il codice è in esecuzione ma lo stato di ToggleButton non cambia.

Stranamente, se chiamo setChecked(false) sull'attività onCreate cambia lo stato del pulsante, ma non su onResume. Cosa mi manca?

Grazie.

risposta

15

Capito. Tipo.

ho avuto questa

protected void onResume() { 
     super.onResume(); 

     Intent intent; 

     if ((intent = getIntent()) != null && MainActivity.STOP.equals(intent.getAction())) { 
      disable(); 

      toggle.setChecked(false); 

      finish(); 
     } 
    } 

Ma la chiamata a finish non stava in realtà facendo nulla. L'ho rimosso e ora funziona. Non è un indizio perché questo l'ha risolto.

Qualcuno vuole spiegare?

0

Dovrebbe funzionare.

Verificare di non avere una chiamata a setChecked(true) da qualche altra parte nel codice che viene eseguita dopo averlo impostato su false. Forse all'interno di un OnCheckedChangeListener?

+0

so che dovrebbe ma non è così. Non ho altre chiamate a 'setChecked', ho appena cercato attraverso tutto il codice. – Franco

1

Call Finish quando l'attività è terminata e deve essere chiusa. ActivityResult viene propagato a chiunque ti abbia lanciato tramite onActivityResult().

Quindi nel tuo caso Invece di cambiare lo stato del pulsante Toggle risale al suo metodo chiamante che può essere l'onCreate() o onPause ...

dettagli sull'utilizzo di finire here.....

Problemi correlati