navigation+viewmodel的模式使用replace可以适配大部分场景,但是有些场景却异常的不方便,例如A页面是个可折叠的列表,在跳转B页面后返回,A页面的折叠状态被重置了,当然我可以在viewmodel保存页面的显示状态,但是总会觉得有一些得不偿失,所以就考虑使用add的形式去实现navigation的页面切换.
在网上找轮子发现没有匹配的,参考了一些项目和文章就自己写了个轮子KeepStateNavigator,设计是考虑尽量不更改FragmentNavigator方法本身的意义,并且满足原本Animations,Argument,Pop Behavipr,Launch Options所支持的特性

参考
https://github.com/STAR-ZERO/navigation-keep-fragment-sample
https://juejin.im/post/6844903896104747022
网友评论