OnSaveInstanceState no está guardando mis valores (onCreate input El paquete siempre es nulo)
Paquete de ahorro (actividad A):
@Override protected void onSaveInstanceState(Bundle outState) { outState.putString("test", "value"); super.onSaveInstanceState(outState); }
Navegar a la actividad B;
- ¿Cuál es el uso de la actividad de preferencia en android?
- ¿Por qué algunas veces funciona guardar un Hashtable de objetos no Parcelable en onSaveInstanceState ()?
- Recolección de actividades de basura
- Utilizar un solo diseño xml para múltiples actividades con diferentes datos
- Transición de la actividad en Android
startActivity(new Intent(getBaseContext(), B.class));
Volviendo a la actividad A:
startActivity(new Intent(getBaseContext(), A.class));
Tratando de cargar el valor que escribí para agrupar en la actividad A:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.d("MY", "saved instance is null"+ Boolean.toString(savedInstanceState == null)); }
Devuelve siempre savedInstanceState = null. Lo que me falta aquí?
OnRestoreInstanceState nunca se activa cuando vuelvo a la actividad principal
- ¿Cómo puedo matar una actividad cuando se presiona el botón Atrás?
- Errores de administración del ciclo de vida de UnityPlayer en una aplicación nativa de Android
- ¿Qué sucede si startActivity () se llama a la actividad ya creada?
- Llamar startIntentSenderForResult de Fragment (Android Billing v3)
- ¿Cómo puedo hacer que mi Android SwipeableCardViews se parezca más a la aplicación de correo de IOS 7 (desliza para mostrar los botones)
- ¿Se matará el hilo antes de que finalice la actividad en Android?
- Actividad que solo se inicia una vez después de una nueva instalación?
- Cómo iniciar una actividad de una clase de hilo en android?
No hay nada mal con su código. Pruebe a girar el dispositivo cuando en la actividad A. Verá lo siguiente en el registro, lo que significa que su onSaveInstanceState () está funcionando bien:
saved instance is nullfalse
Aquí hay un extracto del sitio para desarrolladores de Android , que puede resultar interesante:
El método de devolución de llamada en el que puede guardar información sobre el estado actual de su actividad es onSaveInstanceState (). El sistema llama a este método antes de hacer la actividad vulnerable a ser destruido y lo pasa un objeto Bundle. El Bundle es donde puede almacenar información de estado sobre la actividad como pares nombre-valor, utilizando métodos como putString (). Entonces, si el sistema mata el proceso de su actividad y el usuario vuelve a su actividad, el sistema pasa el paquete a onCreate () para que pueda restaurar el estado de actividad que guardó durante onSaveInstanceState (). Si no hay información de estado que restaurar, el paquete que se pasa a onCreate () es nulo.
Nota: No se garantiza que se llamará onSaveInstanceState () antes de que se destruya la actividad, ya que hay casos en los que no será necesario guardar el estado (por ejemplo, cuando el usuario abandona su actividad con la tecla BACK, porque Usuario está cerrando explícitamente la actividad). Si el método se llama, siempre se llama antes onStop () y posiblemente antes onPause ().
Tengo esta solución por tener:
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
Cuando se vuelve a iniciar la intención antigua que tiene el estado guardado de fondo. Sin esta bandera, creo que cuando startActivity se llama, crea una nueva instancia de la actividad en lugar de obtener la antigua de la pila.
Tienes que hacer super.onSaveInstanceState (outState) antes de añadir contenido a él.
Si navega a otra actividad y regresa, la mejor manera es guardarla en SharedPreference
en el método onPause()
, que está obligado a ejecutar cuando se carga una nueva actividad. En la otra Activity
, se puede acceder al valor en onCreate()
accediendo a la preferencia compartida.
En caso de que quiera retener el estado de su fragmento sobre una rotación del dispositivo y usted se pregunta que onSaveInstanceState
nunca se llama:
- Compruebe si llama a
super.onSaveInstanceState(outState);
En todas sus funcionesonSaveInstanceState
. - Comprueba que no tengas
android:configChanges
en tu AndroidManifest.xml.
- ¿Alguien por favor explique RESULT_FIRST_USER
- ¿Cómo puedo mostrar programaticamente el uso de datos de todas las aplicaciones?