У меня есть действие LauncherActivity.java
, которое запускается с помощью намерения. Это намерение содержит дополнения. LauncherActivity.java
анализирует эту дополнительную информацию и запускает один из нескольких фрагментов.
Сценарий примерно такой:
LauncherActicity
имеет несколько фрагментов, которые действуют как страницы. Сейчас,
с одной из этих страниц я запускаю иностранную деятельность. Сейчас жмем
в идеале вернул бы меня к моему фрагменту в LauncherActicity
, но
в случае, когда LauncherActicity
убит в фоновом режиме,
кнопки назад будет недостаточно. Чтобы предотвратить это, всегда используя
намерение вернуться к LauncherActicity
будет гарантировать, что поток
незатронут, даже если LauncherActicity
убит в фоновом режиме.
Мое требование: я хочу получить доступ к этому намерению во фрагменте, который запускается, чтобы я мог извлечь больше информации, которая также присутствует в дополнениях намерения.
Проблема в том, что когда я делаю это, используя getActivity().getIntent()
, у намерения не будет никаких дополнений, и даже действие будет нулевым.
Как я могу сохранить это намерение, чтобы любой из фрагментов мог получить к нему доступ, используя getActivity().getIntent()
?
Мой код не позволяет мне передавать все эти данные в конструктор или записывать данные в некоторые глобальные переменные.
EDIT
Я проверил вышеизложенное с помощью следующих шагов:
- Когда во внешней деятельности я принудительно остановил процесс, в котором находится
LauncherActivity
, а затем вызвал намерение для LauncherActivity
.
LauncherActivity
обнаружился, как и ожидалось, и фрагмент тоже.
- На этот раз, когда я получил доступ к намерению из фрагмента, используя
getActivity().getIntent()
, намерение и все дополнительные элементы в нем были доступны во фрагменте.
НАБЛЮДЕНИЯ
Кажется, когда приложение LauncherActivity
уже присутствует в backstack, намерение для этого действия вызывает onNewIntent()
, тогда как, когда приложение убивается в фоновом режиме, намерение вызывает действие onCreate()
.
Фрагмент может получить доступ только к намерению, используя getActivity().getIntent()
, которое использовалось для создания действия (то есть намерение, которое вызвало onCreate()
). Остальные намерения недоступны для фрагмента.
Поскольку приложение, содержащее LauncherActivity
, изначально запускается без намерения, в удачном случае все внешние намерения будут вызывать onNewIntent()
и не будут доступны во фрагменте.