Fragment中调用startActivityForResult的那些坑

  • 时间:
  • 浏览:1
  • 来源:大发5分快乐8_极速5分11选5

你这个 就更简单了,直接调用的是父Activity的onActivityResult辦法

总结起来就说 :从哪里发起调用,最终就会走到哪里。

在Fragment中调用startActivityForResult以及监听onActivityResult是很常见的三种生活应用辦法 ,或者稍不注意就会掉到坑里,比如意味着着 ActivityonActivityResult辦法 这样调用super.onActivityResult()辦法 而意味着着 Fragment中死活接收必须onActivityResult的回调。

欢迎关注我的微信公众号,和我一起去每天进步一点点!

从前中间回调onActivityResult辦法 时就可不还要根据requestCode获取对应的Fragment,以便调用Fragment的onActivityResult辦法

你这个 状况会直接调用到Fragment的startActivityForResult辦法

你这个 状况一般存在在嵌套多层Fragment的完后

在中间的startActivityFromFragment辦法 中调用ActivityCompatstartActivityForResult辦法 发起启动Activity的完后 又把requestIndexrequestCode关联起来了

每有一个多多Fragment在内内外部都有一个多多唯一的标识字段who,在FragmentActivity中把所有调用startActivityFromFragment辦法 的fragment的requestCodewho通过key-value的辦法 保存在mPendingFragmentActivityResults变量中

这里2和3的前提是意味着着 父activity中重写了onActivityResult,父Activity的onActivityResult中还要换成super.onActivityResult()

中间的mHost对应的就说 Fragment的父FragmentActivity,就说 有会调用到父FragmentActivitystartActivityFromFragment辦法

这就说 文章开头中提到的2、3两点还要注意的意味着着

从中间的辦法 中可不还要看出FragmentActivity中的onActivityResult辦法 中对于Fragment的startActivityForResult调用意味着着 做了处理。

通过断点调试的辦法 ,亲们会发现最先被回调的就说 父Activity的onActivityResult,也就说 亲们的FragmentActivity的onActivityResult

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起去每天进步一点点

最后总结一下几种场景的应用步骤:

最后看一下ActivityCompatstartActivityForResult辦法

就说 有意味着着 想在子Fragment中监听到onActivityResult辦法 的回调,就不需要说用你这个 辦法

这里allocateRequestIndex辦法 就把requestIndex和Fragment的mWho变量关联起来了

这里就有一个多多间题还要注意了,亲们一般回会覆写父Activity中的onActivityResult辦法 ,你这个 完后 亲们还要在onActivityResult辦法 换成super.onActivityResult(),或者Fragment中的onActivityResult辦法 就这样辦法 回调到了。

虽然,说白了就说 在Fragment中直接调用startActivityForResult辦法 就行,不需要说用getActivity().startActivityForResult(),就说 要用getParentFragment().startActivityForResult(),除非你知道为哪几种必须用这2种辦法 !

就说 有从源码也可不还要看出,你这个 辦法 最后不需要回调Fragment的onActivityResult辦法

getParentFragment发起调用的过程和中间的之类 ,只不过发起调用的是当前Fragment的父Fragment,就说 有最后回调的也是父Activity的onActivityResult辦法 和父Fragment的onActivityResult辦法 。