Обработка обратного нажатия фрагмента после того, как приложение возвращается из фонового режима ⇐ Android
Обработка обратного нажатия фрагмента после того, как приложение возвращается из фонового режима
Я хочу обрабатывать нажатия пользователя в одном из фрагментов активности (Java) (Kotlin).
В методе onCreate активности я вызываю
OnBackPressedCallback onBackPressedCallback = новый OnBackPressedCallback(true) { (...) обработка обратного нажатия, когда зарегистрированы другие BackPressedDispatcherCallbacks (...) } getOnBackPressedDispatcher().addCallback(this, onBackPressedCallback); Затем в onCreateView() фрагмента, который я хочу обработать, вместо этого я вызываю обратное нажатие
activity?.onBackPressedDispatcher?.addCallback(viewLifecycleOwner, объект: OnBackPressedCallback(true) { переопределить fun handleOnBackPressed() { (...) работа с прессом здесь, а не в действии (...) }}) Все работает так, как ожидалось, пока я не переведу приложение в фоновом режиме, а затем не вернусь на передний план, вызывая OnStop -> OnStart как для Activity, так и для Fragment.
В этом случае приложение игнорирует обратный вызов фрагмента и вызывается обратный вызов действия.
Я так понял
[*]
onBackPressedDispatcher вызывает обратные вызовы в порядке, обратном их добавлению. Только если последний добавленный обратный вызов не включен, будет вызван любой ранее добавленный обратный вызов (вызывается только последний включенный обратный вызов)
[*]
Добавление наблюдателя в жизненные циклы активности и фрагмента и запись результатов в журнал:
FRAG: ON_START ДЕЙСТВИЕ: ON_START ФРАГ: ON_RESUME ДЕЙСТВИЕ: ON_RESUME
Activity onStart и OnResume вызывается после эквивалентов Fragments, что фактически делает обратный вызов Activity последним активным и получает обратное событие вместо фрагмента.
Я ищу решение этой проблемы. Буду очень признателен за любые предложения по дальнейшему развитию.
ПС. Подход с вызовом метода последних фрагментов (последний в стеке активности фрагмента Менеджера) не будет работать, поскольку в настоящее время для приложения крайне важно, чтобы эти фрагменты НЕ добавлялись в задний стек.
Я хочу обрабатывать нажатия пользователя в одном из фрагментов активности (Java) (Kotlin).
В методе onCreate активности я вызываю
OnBackPressedCallback onBackPressedCallback = новый OnBackPressedCallback(true) { (...) обработка обратного нажатия, когда зарегистрированы другие BackPressedDispatcherCallbacks (...) } getOnBackPressedDispatcher().addCallback(this, onBackPressedCallback); Затем в onCreateView() фрагмента, который я хочу обработать, вместо этого я вызываю обратное нажатие
activity?.onBackPressedDispatcher?.addCallback(viewLifecycleOwner, объект: OnBackPressedCallback(true) { переопределить fun handleOnBackPressed() { (...) работа с прессом здесь, а не в действии (...) }}) Все работает так, как ожидалось, пока я не переведу приложение в фоновом режиме, а затем не вернусь на передний план, вызывая OnStop -> OnStart как для Activity, так и для Fragment.
В этом случае приложение игнорирует обратный вызов фрагмента и вызывается обратный вызов действия.
Я так понял
[*]
onBackPressedDispatcher вызывает обратные вызовы в порядке, обратном их добавлению. Только если последний добавленный обратный вызов не включен, будет вызван любой ранее добавленный обратный вызов (вызывается только последний включенный обратный вызов)
[*]
Добавление наблюдателя в жизненные циклы активности и фрагмента и запись результатов в журнал:
FRAG: ON_START ДЕЙСТВИЕ: ON_START ФРАГ: ON_RESUME ДЕЙСТВИЕ: ON_RESUME
Activity onStart и OnResume вызывается после эквивалентов Fragments, что фактически делает обратный вызов Activity последним активным и получает обратное событие вместо фрагмента.
Я ищу решение этой проблемы. Буду очень признателен за любые предложения по дальнейшему развитию.
ПС. Подход с вызовом метода последних фрагментов (последний в стеке активности фрагмента Менеджера) не будет работать, поскольку в настоящее время для приложения крайне важно, чтобы эти фрагменты НЕ добавлялись в задний стек.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение