老师有看过这个使用fragment 来实现 类似OnActivityResult的方案吗
来源:3-6 Activity 的 onActivityResult 使用起来非常麻烦,为什么不设计成回调?

wilson_yang
2020-10-20
这是在网上看到的一直方案 目前使用起来没什么问题https://www.jianshu.com/p/a75f57adbb30
但是我没明白 回调的时候上一个Activity 销毁了之后 是不是没有界面的fragment也就销毁了
写回答
1回答
-
bennyhuo
2020-10-20
没有界面的 Fragment 也会被销毁。但返回的时候上一个 Activity 系统会重新创建,并且根据之前 Bundle savedInstance 里面的值来恢复 UI 的状态,这时候 FragmentManager 当中的 Fragment 也会被重建,因此还是会有另外的一个无界面的 Fragment 实例来接收 onActivityResult,只不过,这时候所有的实例都已经不是原来的那个了,因此回调也没有什么用。所以大概看了一下你贴的文章,应该是没有处理这种情况的。
想要复现这个问题,只需要把开发者模式下的不保留活动开启即可。想要解决这个问题目前没有完美的方法,不过可以通过反射替换回调当中引用的 Activity 、View、Fragment 的实例为重建之后的实例,可以满足95%以上的场景了。
我做过一个开源框架,这里面有针对此类问题的详细解法,可以参考。当然也欢迎 star 和 issue
https://github.com/enbandari/TieGuanYin
20
相似问题