Fragment中的onActivityResult不被调用,一般有几种原因,需要一一排查。
1.检查该Fragment所属的Activity是否重写了onActivityResult,若重写了,请确保写了super.onActivityResult();
2.检查Fragment中的startActivityForResult的调用方式。
请确保不要使用getActivity().startActivityForResult方法,而是要直接使用startActivityForResult(…)
3.如果以上两方面都没能解决问题,很可能是如下情况了,略复杂:
该情况是在support-library中使用了Nested Fragment,就是说在Fragment中进行了嵌套,比如用ViewPager展示Fragment等情况。这可以算Google的一个Bug,具体可参见这篇博客:
http://blog.shamanland.com/2014/01/nested-fragments-for-result.html
解决方案:
最好的方式是写一个BaseActivity继承FragmentActivity,重写onActivityResult方法,你用到的Activity都继承BaseActivity来做。BaseActivity具体实现: