2009-07-30 7 views
6

Tengo una notificación que inicia mi actividad y transmite mensajes 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 está en los datos agrupados del intento.Cambiar los datos del conjunto de intentos antes de que se vuelva a crear una actividad después del cambio de orientació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 todavía se muestra después de la orientación ha cambiado, parece que la intención utilizado no es el que yo cambiado, pero la original. La única solución alternativa que encontré es guardar el showMessage adicionalmente en o nSaveInstanceState(). ¿Hay alguna otra manera? ¿O es este el camino a seguir?

Respuesta

20

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.

+0

Lo siento, -1. 'onSaveInstanceState' es la forma correcta de hacerlo, como lo señala @CommonsWare. –

9

Su enfoque onSaveInstanceState() es la respuesta correcta, AFAIK.

Cuestiones relacionadas