首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用动态navGraph startDestination从后台堆栈中删除片段

使用动态navGraph startDestination从后台堆栈中删除片段
EN

Stack Overflow用户
提问于 2020-06-24 01:15:01
回答 1查看 50关注 0票数 0

我有一个具有navGraph的活动,它在创建活动时有条件地选择一个startDestination。

代码语言:javascript
复制
     private suspend fun checkStatusAndNavigate(userID: Int) {
        val navController = findNavController(nav_host_container)
        val user = getUserFromDB(userID)
        val dateNow = Date((if (prefSaved) prefTime() else System.currentTimeMillis())
        val navGraph = navController.navInflater.inflate(nav_graph).apply {
            // NavGraph inflates with one of three possible starting points: A, B, or C.
            startDestination = when {
                checkDate(dateNow) == DateCheck.OldDate -> R.id.fragment_a
                !user.hasOptedIn -> R.id.fragment_b
                else -> R.id.fragment_c
            }
        }
        navController.setGraph(navGraph)
    }

navController.setGraph(navGraph)之后,将启动startDestination。这与预期的一样。

片段B的唯一目标是片段C。但是当用户在片段C中并执行onBackPressed()时,我想跳过片段B,并返回到调用该活动的任何地方(有几个选项,因此覆盖onBackPressed不是一个很好的选项)。

我不认为这是popTo或popToInclusive的问题。我不想清除后端堆栈。如果可能的话,我只想防止片段B进入后台堆栈。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-24 05:46:50

如果你不想从C返回访问B,那么你应该创建一个popTo=BpopToInclusive=truedestination=C的操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62540257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档