Android onActivityResult 不調(diào)用

簡單記錄一下,可能寫的有點亂。開發(fā)需求fragment中調(diào)用了fragment類型的彈窗,彈窗里面調(diào)用了掃碼,掃碼后不回調(diào)onActivityResult。創(chuàng)建彈窗時將fragment作為參數(shù)傳入,調(diào)用掃碼時那里的fragment傳最外層的fragment。
image.png

掃碼后外層的fragment會走onActivityResult回調(diào),在回調(diào)里面在調(diào)用dialog的onActivityResult。


外層fragment

dialog

下面是轉載的
原文鏈接:https://blog.csdn.net/csxwc/java/article/details/31350881


開發(fā)中遇到Fragment中onActivityResult不響應的問題,曾經(jīng)見過。 不少同學說處理方法是在與Fragment綁定的FragmentActivity中重寫onActivityResult方法。返回的result先傳至Fragment的FragmentActiivity。這個FragementActivity的onActivityResult函數(shù)必須調(diào)用 super.onActiivtyResult()。super.onActiivtyResult會將未被處理的result消息繼續(xù)傳給其host的 fragement的onActiivtyResult。

但是都不管用,解決方法就是在Fragment中直接調(diào)用startActivityForResult()方法,而不是調(diào)用 getActivity().startActivityForResult()。

這樣問題就解決了!

另一種情況:Fragment嵌套Fragment,然后在子Fragment中startActivityForResult(),子Fragment中onActivityResult()無響應:

解決方法:在子Fragment中使用getParentFragment().startActivityForResult(),然后在父Fragment的onActivityResult()中獲取返回值,然后在子Fragment中用父Fragment的實例去獲取父onActivityResult()中的返回值,然后去進行你想要進行的操作。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容