Ok, entonces leo cómo Android maneja los "cambios de configuración", destruyendo la Actividad activa.configuración modificada (cambio de orientación) y actividades destructivas: ¿así se supone que debería funcionar?
La primera pregunta Realmente quiero saber de Android Team: ¿por qué? Agradecería una explicación sobre cómo fue el razonamiento, porque no lo entiendo =)
En cualquier caso, el hecho de que actúe de esa manera nos pone a todos, como yo lo veo, en un mundo de dolor.
Supongamos que tiene una Actividad que presenta un número de EditText: s, casillas de verificación, etc. Si un Usuario comienza a llenar ese formulario con texto/datos y luego cambia de orientación (u obtiene una Llamada Telefónica), todos ingresan el Usuario hecho se ha ido. No he encontrado ninguna forma de preservar el estado. Eso nos obliga a hacer una codificación extremadamente dolorosa para no perder todos los datos.
Según lo veo, necesita otra clase "no activa" (o "valor-holding" clase quizás) que tiene un campo para cada "elemento de formulario" (EditText, casilla de verificación, etc.).
Para cada "elemento de formulario" que existe, entonces tiene que adjuntar un evento como "onChanged" (o OnTextChanged o algo así) que actualiza el campo correspondiente en el "valor de retención" clase para hacer Asegúrese de que para cada carácter que escriba (en un EditText por ejemplo) se guarde a la vez.
Tal vez se puede utilizar algún oyente (como "OnDestroy" o algo así) y luego llenar la clase de valor de retención de datos ...
También he encontrado this piece of info donde hablan sobre el uso de Bundle, onSaveInstanceState y onRestoreInstanceState, pero eso también significa que el programador tiene que guardar manualmente y luego volver a colocar los valores en el lugar correcto? Este enfoque es un poco menos desordenado que mis sugerencias anteriores, pero aún así no es muy bueno ...
Ahora, alguien puede decirme que estoy totalmente equivocado y que no es así como funciona y que extrañé totalmente algunos ¿información vital? ;-)
Saludos
El marco se encarga de automatizar guardar y restaurar algo del estado; el resto debes hacerlo tú mismo en métodos como 'onPause' y' onResume'. Sé que es difícil darse vueltas al principio, pero realmente necesitas saber el ciclo de vida de una actividad: http://developer.android.com/guide/topics/fundamentals.html#actlife Cambios de configuración como la rotación de la pantalla Necesitamos comenzar de nuevo porque tienen que rediseñar completamente la pantalla. Estoy seguro de que alguien más vendrá y dejará una respuesta adecuada también. :) –
La respuesta principal en la pregunta anterior que vinculó lo resume bastante bien. La forma más fácil de ver lo que se guarda o no durante la rotación o una llamada telefónica, etc., es probarlo en el emulador. –
No entiendo por qué el re-diseño tiene algo que ver con los datos contenidos en las Vistas. El equipo de Android, y todos los demás, siempre hablan de lo importante que es separar la GUI y el código. Entonces, ¿por qué no simplemente volver a dibujar la cosa y guardar los datos? Hay una sugerencia de este tipo aquí: http://stackoverflow.com/questions/456211/activity-restart-on-rotation-android Sugiere anular el onConfigurationChanged y luego solo hacer el setContentView, omitiendo el onCreate ... – Ted