Измените данные набора намерений до того, как действие будет заново создано после изменения ориентации

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

  •  05-07-2019
  •  | 
  •  

Вопрос

У меня есть уведомление, которое запускает мою деятельность и передает сообщения, используя функцию putExtra (). Затем сообщение отображается пользователю в функции onCreate действия. Когда приложение перезапускается из-за изменения ориентации, сообщение отображается снова, поскольку оно все еще находится в связанных данных намерения.

Как я могу удалить лишние данные?

Я попробовал следующее:

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

Но сообщение все равно будет отображаться после изменения ориентации, похоже, что использованное намерение - не то, которое я изменил, а исходное. Единственный обходной путь, который я нашел, - это дополнительно сохранить showMessage в o nSaveInstanceState () . Есть ли другой способ? Или это путь?

Это было полезно?

Решение

(простое) решение:

Вместо звонка

bundle.remove("showMessage");

Я сейчас использую

getIntent().removeExtra("showMessage");

который работает как положено. Похоже, getIntent (). GetExtras () возвращает копию, а не ссылку.

Другие советы

Ваш подход onSaveInstanceState () является правильным ответом, AFAIK.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top