更改Navigation fragment 由replace为add

navigation+viewmodel的模式使用replace可以适配大部分场景,但是有些场景却异常的不方便,例如A页面是个可折叠的列表,在跳转B页面后返回,A页面的折叠状态被重置了,当然我可以在viewmodel保存页面的显示状态,但是总会觉得有一些得不偿失,所以就考虑使用add的形式去实现navigation的页面切换.

在网上找轮子发现没有匹配的,参考了一些项目和文章就自己写了个轮子KeepStateNavigator,设计是考虑尽量不更改FragmentNavigator方法本身的意义,并且满足原本Animations,Argument,Pop Behavipr,Launch Options所支持的特性

sample: HostFragment->A->B-(popUpTo HostFragment,inclusive:false)->C

参考

https://github.com/STAR-ZERO/navigation-keep-fragment-sample

https://juejin.im/post/6844903896104747022

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