Обработка обратного нажатия фрагмента после того, как приложение возвращается из фонового режимаAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Обработка обратного нажатия фрагмента после того, как приложение возвращается из фонового режима

Сообщение Anonymous »


Я хочу обрабатывать нажатия пользователя в одном из фрагментов активности (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 последним активным и получает обратное событие вместо фрагмента.

Я ищу решение этой проблемы. Буду очень признателен за любые предложения по дальнейшему развитию.

ПС. Подход с вызовом метода последних фрагментов (последний в стеке активности фрагмента Менеджера) не будет работать, поскольку в настоящее время для приложения крайне важно, чтобы эти фрагменты НЕ добавлялись в задний стек.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»