2010-04-07 6 views
12

Tengo actividad con ListView dentro de él y en el método onCreate de la Actividad Tengo código para llenar los datos de ListView estos datos están basados ​​en un servidor y llenarlos incluye llamar a URL de red . Tengo el ArrayAdapter de ListView en la misma clase de actividad.Android ListView en Actividad que se actualizó al cambiar de orientación

Ahora bien, el problema al que me enfrento es que, en el resto de los escenarios, mi actividad se comporta de forma adecuada, pero cuando tiene lugar la orientación [Retrato a ajardinado o de otro modo] los datos se están perdiendo y los datos más recientes las llamadas son necesarias para rellenar los mismos datos antiguos, ahora esto es algo que no pretende el código, ¿cómo debo tratarlo?

Respuesta

23

Android se detendrá y reiniciará su actividad a menos que le haya indicado que gestionará los cambios de orientación usted mismo. Hace esto para que pueda especificar diferentes recursos (como diseños) que son específicos de la orientación (entre otras razones).

Debe agregar android:configChanges="orientation" a la eliminación de su actividad en su AndroidManifest.xml, y debe sobrescribir onConfigurationChanged(). No creo que deba hacer nada especial dentro deConfigurationChanged(), simplemente implementarlo debería ser el truco.

+6

No creo que deba sobrescribir enConfigurationChanged(). Agregar Android: configChanges debería ser suficiente. –

+1

OMG Esa es la mayor ayuda que jamás me he imaginado ... No tienes idea de cómo acabas de salvarme la vida ... Gracias a todos por la visión de WonderFul que me diste. –

+0

Ahora que lo pienso, janfsd probablemente tenga razón ... si no estás haciendo nada útil en onConfigurationChanged, solo deja que la implementación predeterminada lo haga. – rascalking

2

AFAIK toda la actividad se recrea en un cambio de orientación! Lo mismo ocurre si cambia a la aplicación anoter y vuelve más tarde. Sugeriría almacenar los datos en SharedPreferences o serializarlos en XML y almacenarlos.

Otra posibilidad podría ser registrar su propio servicio que almacena los datos en la memoria y la actividad poluplata los datos del servicio.

+0

Creo que registrar el Servicio es la Mejor Alternativa es así. –

+0

Dónde puedo obtener más información sobre los servicios de Android para cumplir mi propósito –

12

Para los dirigidos a la API de 13 o superior, "ScreenSize" también debe ser utilizado. Si ese es su caso, agregue

android:configChanges="orientation|screenSize" 

a su manifiesto de Android.

Más información here.

0
android:configChanges="orientation|screenSize" 

este código sólo funcionará si no tenemos otro diseño para el modo de paisaje!

Cuestiones relacionadas