Modifier les données du groupe d'intentions avant qu'une activité ne soit recréée après le changement d'orientation

StackOverflow https://stackoverflow.com/questions/1206418

  •  05-07-2019
  •  | 
  •  

Question

J'ai une notification qui démarre mon activité et transmet un message à l'aide de la fonction putExtra () de l'intention. Le message est ensuite affiché à l'utilisateur dans la fonction onCreate de l'activité. Lorsque l'application est redémarrée en raison d'un changement d'orientation, le message s'affiche à nouveau car il fait toujours partie des données groupées de l'intention.

Comment puis-je supprimer les données supplémentaires?

J'ai essayé les solutions suivantes:

Bundle bundle = getIntent().getExtras();
if (bundle.getBoolean("showMessage")) {
    // ... show message that is in bundle.getString("message")
    // remove message
    bundle.remove("showMessage");
}

Mais le message sera toujours affiché après la modification de l'orientation. Il semble que l'intention utilisée ne soit pas celle que j'ai modifiée, mais celle d'origine. La seule solution de contournement que j'ai trouvée consiste à enregistrer le showMessage en outre dans o nSaveInstanceState () . Y a-t-il un autre moyen? Ou est-ce la voie à suivre?

Était-ce utile?

La solution

La solution (simple) est la suivante:

Au lieu d'appeler

bundle.remove("showMessage");

J'utilise maintenant

getIntent().removeExtra("showMessage");

qui fonctionne comme prévu. On dirait que getIntent (). GetExtras () renvoie une copie et non une référence.

Autres conseils

Votre approche onSaveInstanceState () est la bonne réponse, autant que je sache.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top