Reinicio Activity al rotar android
21-12-2011 por Jose
Después de perder bastante tiempo intentando comprender el comportamiento de una aplicación android que estamos desarrollando, hemos llegado (una vez más) a la conclusión de lo contraproducente que es dar por sabidas ciertas cosas, en la vida en general y en la programación en particular.
El caso es que alguien en Google, al desarrollar android, decidió que el comportamiento por defecto de una alicación al cambiar su orientación (rotar) sea el de reiniciar la Activity que en ese momento esté activa. Esta acción, si no se tiene en cuenta, puede ocasionar la pérdida de datos introducidos, errores en tiempo de ejecución, etc.
Cómo lo evitamos?
Una forma de evitar el reinicio de la activity es sobrecargar el método onConfigurationChanged, por ejemplo:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
después en el manifest añadiremos el siguiente atributo a la activity en cuestión:
android:configChanges="keyboard|keyboardHidden|orientation"
Relacionado con este tema es el ajuste de los elementos gráficos tras el cambio de orientación. Una opción, es la creación de una carpeta llamada "/res/layout-land" donde crearemos la nueva interfaz de usuario a la que se llamará cuando se cambie la orientación horizontal.
Espero os sea útil.
- Pertenece a Software Libre