Estado de ahorro de Android en el cambio de orientación

Tengo una aplicación de Android que mantiene el estado con respecto a la distancia recorrida, el tiempo transcurrido, etc Este estado me puede almacenar convenientemente en un objeto y almacenar una referencia a ese objeto en el paquete cuando Android llama onDestroy () cuando el usuario cambia la pantalla , Luego restaure el estado en onCreate (Bundle savedBundle). Sin embargo, también tengo algún estado en los Botones y EditText objetos en la pantalla que quiero persistir a través de orientaciones de pantalla. Por ejemplo, en onStart (Bundle savedBundle) llamo a:

_timerButton.setBackgroundColor(Color.GREEN); _pauseButton.setBackgroundColor(Color.YELLOW); _pauseButton.setEnabled(false); 

A continuación, durante el funcionamiento de mi aplicación, se cambiará el estado de colores / activado de estos botones. ¿Existe una manera más conveniente de persistir el estado de los elementos de la interfaz de usuario (EditText, objetos Button, etc) sin tener que guardar / restaurar manualmente cada atributo para cada botón? Se siente realmente torpe tener que manejar manualmente este tipo de estado entre las orientaciones de la pantalla.

Gracias por cualquier ayuda.

¿Ha intentado usar: su trabajo a través de

 <activity name= ".YourActivity" android:configChanges="orientation|screenSize"/> 

En el archivo de manifiesto?

No funciona de forma predeterminada porque, al cambiar la orientación onCreate volverá a llamar y volverá a dibujar su vista.

Si escribes este parámetro sin necesidad de manejar en Actividad, el marco se encargará del resto de las cosas. Conservará el estado de la pantalla o del diseño si se cambia la orientación.

NOTA Si está utilizando un diseño diferente para el modo horizontal, al agregar estos parámetros no se llamará el diseño para el modo horizontal.

Otra manera y otra manera

Para guardar su variable o valores debe usar onSaveInstanceState (Bundle); Y cuando los cambios de orientación entonces deberían recuperar los valores deben utilizar onRestoreInstanceState () también, pero no muy común. ( OnRestoreInstanceState () se llama después de onStart (), mientras que onCreate () se llama before onStart () . Utilice los métodos put para almacenar valores en onSaveInstanceState ()

 protected void onSaveInstanceState(Bundle icicle) { super.onSaveInstanceState(icicle); icicle.putLong("param", value); } 

Y restaurar los valores en onCreate () :

 public void onCreate(Bundle icicle) { if (icicle != null){ value = icicle.getLong("param"); } } 
  • OnDestroy se llama cada vez que se enciende la pantalla
  • Ciclo de vida de la actividad de Android: ¿para qué sirven todos estos métodos?
  • Alternativa garantizada a onDestroy ()?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.