我已閱讀相關文章。在每個問題中,我都會看到活動的onActivityResult()至少會被調用。問題是如何將結果攜帶到碎片或嵌套碎片。但我面臨的問題是不同的。
我正在實現設置頁面,該頁面將包含來自新設計支持庫的TabLayout的選項卡。在我的應用程序中,我有一個包含其他碎片的Activity ...所以我添加了一個SettingsTabFragment,其中包含ViewPager和FragmentPagerAdapter。此適配器爲每個選項卡保留碎片。
其中一個選項卡是用戶配置文件設置,用戶可以在其中添加他的個人資料圖片。我用ACTION_PICKE意圖從子片段調用startActivityResult()。我重寫了Activity中的onActivityResult(),父段(保存視圖分頁器)和SettingsTabFragment。但是當我從畫廊選擇照片時,他們都沒有打電話。當從ViewPager中的子片段調用startActivityResult()時,不會調用onActivityResult()
當從以下位置調用startActivityResult()時,將無法調用onActivityResult():
- 子片段。
- 父代片段。我通過子片段getParentFragment()。startActivityResult()完成了此操作,並且也從父片段本身中直接附加到活動(不嵌套)。
- 使用getParentFragment()。getActivity()。startActivityResult()從子片段調用活動。
它們都不會導致至少調用onActivityResult()活動。
當我從片段調用startActivityResult()時,我確信我只調用了startActivityResult()..而不是getActivity()。startActivityResult()。
我以爲onActivityResult is not being called in Fragment,並嘗試了github lib中的一個答案建議,但似乎老闆告訴現在不推薦它。它也有編譯錯誤。
想不想呢?
這是一個已知的限制。在Activity上調用'startActivityForResult()',或者在父代片段上調用'startActivityForResult()',並讓活動/父代片段將結果傳遞給子片段。 – CommonsWare
我已經完成了使用回調。從子片段callBackToActivity.launchImagePicker()但沒有結果。我也嘗試從父母片段,但沒用。 – cgr
我同意@CommonsWare最初onActivityResult的父活動將被調用。您需要覆蓋父代片段和父代活動的onActivityResult –