miércoles, 7 de julio de 2010

Android on orientation change

Existe un comportamiento en Android que resulta un poco desconcertante si no te ha sucedido nunca, tu estás programando una pantallita tranquilamente y resulta que cuando cambias la orientación del móvil se pierde toda la información insertada :/, un poco de investigación te lleva a la conclusión de que se está llamando al onStop, onDestroy y onCreate de la actividad, WTF! pero si yo sólo he girado la pantalla del móvil ...

Por lo visto es el comportamiento normal en Android y tiene una solución cuya complejidad depende de lo complicada que sea tu interface. La solución pasa por utilizar dos métodos de la clase Activity:

onRetainNonConfigurationInstance: Método que se llama cuando la actividad se está destruyendo, su objetivo es recopilar la información que el usuario haya insertado o que sea costosa de volver a recuperar. Este método debe estár declarado y devolverá un Object con la información descrita.

getLastNonConfigurationInstance Este otro método debe ser llamado en la inicialización de la actividad, lo suyo es en el onCreate, devolverá el Object que retornó el método anterior y tendremos que volver a cargar esa información en la Actividad manualmente.

Es un proceso sencillo, pero hay que conocerlo :)

2 comentarios:

  1. La vida ha hecho que justo ahora mismo estuviera averigüando cómo hacer algo así. ¡Gracias!

    ResponderEliminar
  2. Como te decía por twitter, me alegro de que el post le sea útil a alguien :)

    ResponderEliminar