首页 > 解决方案 > Android NavigationComponent - 更改活动后删除片段

问题描述

我面临一个关于使用导航组件的问题。

我有这个层次结构:

当我在 f2 上时,我会像这样更改活动:

button.setOnClickListener {
        startActivity(Intent(activityA, ActivityB::class.java))
    }

我想要的是:当我去活动B时,应该删除(活动A的)片段f2 。因此,当我将终止活动 B 时,我将在没有片段 f2的情况下返回活动A。

为了说明流程:

  1. 活动 A (f1 > f2) > 活动 B (需要删除 f2 )
  2. 我什么时候回来:活动 B > 活动 A(仅限 f1

我正在使用导航组件,并尝试在我的 nav_graph 中使用popUpTopopUpToInclusive选项。我设法删除了片段,但是当我删除它时总是有一个小故障(即我们在通过活动 B 之前看到片段的删除,所以我们看到 f1 片段有一点时间)。我想让交易对用户不可见。

有没有办法做到这一点?不要犹豫,问我是否需要更高的精度。

谢谢你的回答,

标签: androidkotlinnavigation

解决方案


当您使用导航组件时,您可以有方向,然后使用导航组件从源片段/活动移动到目标片段/活动。例如:

val actionLockToLogin = LockFragmentDirections.actionLockToLogin()
NavHost.findNavController(this).navigate(actionLockToLogin)

在这段代码中,我从 LockFragment 转到 LoginFragment。只需在导航的 XML 中添加片段或活动。设置从源片段/活动到目标片段/活动的操作。并通过使用我向您展示的代码,尝试在它们之间导航。


推荐阅读