Alterar dados pacote intenção antes de uma atividade é re-criado após a mudança de orientação

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

  •  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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top