Я создал простое приложение ниже с
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