- 用getActivity方法发起调用,只有父Activity的onActivityResult会调用,Fragment中的onActivityResult不会被调用
- 直接发起startActivityForResult调用,当前的Fragment的onActivityResult,和父Activity的onActivityResult都会调用
- 用getParentFragment发起调用,则只有父Activity和父Fragment的onActivityResult会被调用,当前的Fragment的onActivityResult不会被调用。
这里2和3的前提是如果父activity中重写了
onActivityResult
,父Activity的onActivityResult
中必须添加super.onActivityResult()
总结起来就是:从哪里发起调用,最终就会走到哪里。
源码分析
Fragment中直接调用startActivityForResult
(1)发起startActivityForResult
调用
这种情况会直接调用到Fragment的startActivityForResult
方法
//Fragment.class
public void startActivityForResult(Intent intent, int requestCode, @Nullable Bundle