hegaojian / JetpackMvvm

:chicken::basketball:一个Jetpack结合MVVM的快速开发框架,基于MVVM模式集成谷歌官方推荐的JetPack组件库:LiveData、ViewModel、Lifecycle、Navigation组件 使用Kotlin语言,添加大量拓展函数,简化代码 加入Retrofit网络请求,协程,帮你简化各种操作,让你快速开发项目
https://github.com/hegaojian/JetpackMvvm
Apache License 2.0
3.13k stars 610 forks source link

请问使用navigation打开多个fragment怎么保留最近打开的三个? #68

Closed FrankyLee-dev closed 3 years ago

FrankyLee-dev commented 3 years ago

比如一个商品详情页面下面会有推荐商品,点击推荐商品又会打开商品详情,一直重复操作是不是就打开了很多个商品详情页。怎么只保留最近打开的3个呢?

hegaojian commented 3 years ago

这个业务在navigation中我也没想到有什么好的处理方式,如果你解决了的话,可以将答案发出来分享一下。。。

FrankyLee-dev commented 3 years ago

var entity: NavBackStackEntry? = null var first = true var count = 0 nav().backStack.map { if (it.destination.label?.equals("DetailFragment") == true) { if (first) { entity = it first = false } count++ if (count >= 3) { nav().backStack.remove(entity) } } }

nav().navigate(R.id.action_detailFragment_self)

我试了下跳转之前遍历下返回栈,栈里面详情页大于3个的话就移除第一个详情页,但是结果并不是我们想要的😂

hegaojian commented 3 years ago

... 0.0 这就有点难受了