2011-05-09 9 views
8

Tengo un ToggleButton define así:¿Cómo cambiar el estado de ToggleButton mediante programación?

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

y quiero cambiar su estado mediante programación. Intenté usar los métodos setChecked y toggle, pero ninguno de esos funciona en mi situación.

Tengo una notificación en curso y cuando mi actividad recibe el intento de notificación, el botón de alternar debe establecerse como no marcado, pero no está funcionando.

Estoy haciendo esto en la actividad onResume. El código se está ejecutando pero el estado de ToggleButton no cambia.

Extrañamente, si llamo setChecked(false) en onCreate de que no cambia el estado del botón, pero no en onResume la actividad. ¿Qué me estoy perdiendo?

Gracias.

Respuesta

15

Lo tengo. Mas o menos.

Tenía esta

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

     Intent intent; 

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

      toggle.setChecked(false); 

      finish(); 
     } 
    } 

Pero la llamada a finish no estaba realmente haciendo nada. Lo eliminé y ahora funciona. Ni una pista de por qué esto lo solucionó.

¿Alguien quiere explicarlo?

0

Debería funcionar.

Compruebe que no tiene una llamada al setChecked(true) en otro lugar del código que se ejecuta después de establecerlo en falso. Tal vez dentro de un OnCheckedChangeListener?

+0

sé lo que debería , pero no es así No tengo otras llamadas a 'setChecked', solo busqué en todo el código. – Franco

1

Llamar a finalizar cuando su actividad esté completa y se cierre. ActivityResult se propaga a quien lo lanzó a través de ActivResult().

Así, en su caso lugar de cambiar el estado del botón de palanca que se remonta a su método de llamada que puede ser el onCreate() o onPause ...

detalles sobre el uso de terminar here.....

Cuestiones relacionadas