Alterar dados pacote intenção antes de uma atividade é re-criado após a mudança de orientação
-
05-07-2019 - |
Pergunta
Eu tenho uma notificação que começa a minha actividade e passa uma mensagem usando a função da intenção putExtra (). A mensagem é então exibida para o usuário em função onCreate da atividade. Quando o aplicativo é reiniciado devido a uma mudança de orientação, a mensagem é exibida novamente, uma vez que ainda está nos da intenção de dados agrupados.
Como posso remover os dados extra?
Eu tentei o seguinte:
Bundle bundle = getIntent().getExtras();
if (bundle.getBoolean("showMessage")) {
// ... show message that is in bundle.getString("message")
// remove message
bundle.remove("showMessage");
}
Mas a mensagem ainda será exibida após a orientação mudou, parece que o utilizado intenção não é o que eu mudado, mas o original. A única solução que eu encontrei é para salvar o showMessage, adicionalmente, em onSaveInstanceState()
.
Existe outra maneira? Ou este é o caminho a percorrer?
Solução
A solução (simples) é:
Em vez de chamar
bundle.remove("showMessage");
Eu agora uso
getIntent().removeExtra("showMessage");
que funciona como o esperado. Parece que getIntent (). GetExtras () retorna uma cópia, não uma referência.
Outras dicas
A sua abordagem onSaveInstanceState()
é a resposta correta, AFAIK.