programacion - Android guarda el estado en el cambio de orientación
manual de android en pdf (2)
¿Has 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, cuando cambia la orientación, se volverá a llamar a onCreate
y se volverá a dibujar su vista.
Si escribe este parámetro sin necesidad de manejarlo en la Actividad, el marco se encargará del resto. Conservará el estado de la pantalla o el 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á al diseño para el modo horizontal.
Tengo una aplicación de Android que mantiene el estado de la distancia recorrida, el tiempo transcurrido, etc. Este estado puedo almacenar convenientemente en un objeto y almacenar una referencia a ese objeto en el Paquete cuando Android llama a Destruir () cuando el usuario cambia la pantalla orientación, luego restaurar el estado en onCreate (Bundle savedBundle). Sin embargo, también tengo algún estado en los objetos Buttons y EditText en la pantalla que deseo conservar a través de las orientaciones de la pantalla. Por ejemplo, en onStart (Bundle savedBundle) llamo:
_timerButton.setBackgroundColor(Color.GREEN);
_pauseButton.setBackgroundColor(Color.YELLOW);
_pauseButton.setEnabled(false);
Luego, durante el funcionamiento de mi aplicación, se cambiarán los colores / estado habilitado de estos botones. ¿Existe una manera más conveniente de mantener el estado de los elementos de la interfaz de usuario (Editar texto, Objetos de botón, etc.) sin tener que guardar / restaurar manualmente cada atributo para cada botón? Se siente muy torpe tener que gestionar manualmente este tipo de estado entre las orientaciones de pantalla.
Gracias por cualquier ayuda.
Para guardar su variable o valores debe usar onSaveInstanceState (Bundle); y cuando los cambios de orientación deben recuperar los valores, también se debe usar onRestoreInstanceState (), pero no es muy común. (Se llama a onRestoreInstanceState () después de onStart (), mientras que se llama a onCreate () antes de onStart () . Use los métodos de poner para almacenar valores en onSaveInstanceState ()
protected void onSaveInstanceState(Bundle icicle) {
super.onSaveInstanceState(icicle);
icicle.putLong("param", value);
}
Y restaura los valores en onCreate () :
public void onCreate(Bundle icicle) {
if (icicle != null){
value = icicle.getLong("param");
}
}