Activity和Fragment的onActivityResult方法回调的故事

在实际开发过程中,发现了一些有趣的故事,记录一下以便备查,在我们打开新的activity时候有时候需要回传数据到上个页面,儿这个页面有可能是activity,也可能在activity中嵌套fragment。这个时候onActivityResult的回调方法就不一定好使,经过查证,activity和fragment中都拥有开启一个activity的能力,直接用activity调用startActivityForResult()方法是没有问题,这里不再赘述,讲讲fragment调用。

在fragment调用activity.startActivityForResult()方法会执行activity的onActivityResult()方法,不会执行fragment的,如果调用fragment.startActivityForResult()方法就会执行fragment中的onActivityResult()方法,如果你包裹fragment的activity中同样也使用了onActivityResult()方法,那么请记住,一定不能删掉关键代码super.onActivityResult(requestCode, resultCode, data);因为fragment之所以能够回调到onActivityResult()方法,是因为在activity的onActivityResult()方法中对fragment做了处理,如果没有这句就不会执行fragment中的onActivityResult()方法。也就是说调用fragment.startActivityForResult()方法,会先执行activity的onActivityResult()方法,然后通过super.onActivityResult(requestCode, resultCode, data)方法判断是否要传递给fragment。


注意 :onActivityResult方法会在onresume()方法前面执行。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容