navigation+viewmodel的模式使用replace可以適配大部分場景,但是有些場景卻異常的不方便,例如A頁面是個可折疊的列表,在跳轉(zhuǎn)B頁面后返回,A頁面的折疊狀態(tài)被重置了,當然我可以在viewmodel保存頁面的顯示狀態(tài),但是總會覺得有一些得不償失,所以就考慮使用add的形式去實現(xiàn)navigation的頁面切換.
在網(wǎng)上找輪子發(fā)現(xiàn)沒有匹配的,參考了一些項目和文章就自己寫了個輪子KeepStateNavigator,設(shè)計是考慮盡量不更改FragmentNavigator方法本身的意義,并且滿足原本Animations,Argument,Pop Behavipr,Launch Options所支持的特性
參考
https://github.com/STAR-ZERO/navigation-keep-fragment-sample
https://juejin.im/post/6844903896104747022