Cambie los datos del paquete de intenciones antes de volver a crear una actividad después del cambio de orientación
-
05-07-2019 - |
Pregunta
Tengo una notificación que inicia mi actividad y pasa un mensaje utilizando la función putExtra () del intento. El mensaje se muestra al usuario en la función onCreate de la actividad. Cuando la aplicación se reinicia debido a un cambio de orientación, el mensaje se muestra nuevamente ya que aún se encuentra en los datos agrupados de la intención.
¿Cómo puedo eliminar los datos adicionales?
He intentado lo siguiente:
Bundle bundle = getIntent().getExtras();
if (bundle.getBoolean("showMessage")) {
// ... show message that is in bundle.getString("message")
// remove message
bundle.remove("showMessage");
}
Pero el mensaje seguirá apareciendo después de cambiar la orientación, parece que la intención utilizada no es la que yo cambié, sino la original. La única solución que encontré es guardar el showMessage adicionalmente en o nSaveInstanceState ()
.
¿Hay otra manera? ¿O es este el camino a seguir?
Solución
La solución (simple) es:
En lugar de llamar
bundle.remove("showMessage");
Ahora uso
getIntent().removeExtra("showMessage");
que funciona como se esperaba. Parece que getIntent (). GetExtras () devuelve una copia, no una referencia.
Otros consejos
Su enfoque onSaveInstanceState ()
es la respuesta correcta, AFAIK.