LA S.O.P.A según Mafalda Feliz Navidad 2011

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.

el 21-12-2011 a las 10:54:0. Puedes subscribirte mediante RSS 2.0. Puedes dejar tu comentario.

4 Comentarios

Emmanuel Menchaca el 02-04-2014 a las 23:59:3

hola amigos espero que puedan acer un post de como reparar la rotabilidad ya que en el huawei Ascend y210 al hacer swap hay que cambiar el kernel y intalar unos modulos. pero el kernel o los modulos estan mal ya que la rotabilidad se invierte. espero que ne puedan ayudar..

Santy007 el 24-01-2013 a las 19:24:4

El valor de los atributos se perderá al cambiar la orientación, sin embargo si hacemos estos atributos estáticos el valor permanecerá. Sin embargo se volverá a ejecutar el método onCreate(), por eso, si no queremos volver a inicializar todos los atributos de la actividad, porque su valor no ha cambiado, los deberemos hacer estáticos y comprobar en el onCreate() si su valor es null o no, y si no es null es que los atributos ya están inicializados y no tendremos que hacer nada. (En el caso de no hacer esto estaremos realizando operaciones innecesarias)

Nacho el 14-08-2013 a las 07:06:4

Hola RV,empiezé a utiliar el android studio, y resulta que cuando cambia de orientación el segundo activity, se reinicia y se regresa al primer activity, nose que podria estar pasando. Gracias

jonny el 10-07-2014 a las 22:54:2

y como haces para un imageview con bitmap cargado en ejecucion

Deja tu mensaje

  • Nombre/Alias (requerido)
  • e-Mail (no será publicado)(requerido)
  • Sitio Web

A cerca de idominiun | Diseño Web | Posicionamiento Web | Diseño Gráfico | Aplicaciones a medida | Portafolio | Contacto

Todos los contenidos están bajo licencia Creative Commons mientras no se indique lo contrario.