OnActivityResult не вызывается, когда вложенный фрагмент использует замену вместо добавления с параметром «Не сохранять активность». - PullRequest
3 голосов
/ 20 апреля 2019

Я создал простое приложение ниже с

MainActivity -> ContainerFragment -> MainFragment

Контейнерный фрагмент использует replace для фиксации основного фрагмента.

я включаю не сохраняет активность`

Когда MainFragment вызывает startActivityForResult и возвращается из действия, onActivityResult не вызывается.

Этого не происходит, когда

  • Это один фрагмент. (не вложенный)
  • Don't Keep Activity ВЫКЛ.
  • Когда ContainerFragment использует add для фиксации MainFragment.

Чтобы повторить проблему, загрузите код в следующем github и запустите его. (Не забудьте включить Don't Keep Activity). Нажмите Start Activity.., затем нажмите End Activity и ожидайте тост (без тоста, показывает, что onActivityResult во фрагменте не вызывается)

https://github.com/elye/issue_android_onactivityresult_not_called

По-видимому, ранее сообщалось, что вложенный фрагмент не может получить onActivityResult, как было опубликовано в https://stackoverflow.com/a/36239436/3286489,, но заявлено, что оно разрешено в библиотеке поддержки Android 23.2.1. Но для моего случая я попробовал на Android Support Library 28 (Android Pie). Так что это все еще актуальная проблема, я верю.

Поделитесь этим здесь на случай, если я ошибаюсь, и этому есть какое-то объяснение.

В случае обходного пути, один рекомендуется в https://inthecheesefactory.com/blog/how-to-fix-nested-fragment-onactivityresult-issue/en.

Другой обходной путь, о котором сообщалось в https://stackoverflow.com/a/20543245/3286489

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...