android - 如何在 Android 中使用导航 Controller 组件返回根 fragment 或层次结构的顶部?

标签 android android-jetpack android-navigation android-architecture-navigation

假设我在底部导航 View 中有 4 个标签。如果用户选择其中一个选项卡,那么用户将从一个 fragment 导航到其他 fragment 。

假设用户选择第一个选项卡(主页),然后从以下位置导航:

fragmentA(home)->fragmentB->fragmentC->fragmentD->fragmentE

我想在 Android 中使用导航 Controller 组件以编程方式从 fragmentE 返回到 fragmentA。该怎么做?

我尝试过使用这段代码,但它只是回到了fragmentD(表单fragmentE)

btn.setOnClickListener{
 Navigation.findNavController(view).navigateUp()
}

最佳答案

NavControllerpopBackStack(int, boolean)弹回一个特定的目的地ID:

Attempts to pop the controller's back stack back to a specific destination.

因此你可以使用

Navigation.findNavController(view).popBackStack(R.id.fragmentA, false)

弹回fragmentA而不弹出fragmentA本身(这就是inclusive标志为false的原因。

关于android - 如何在 Android 中使用导航 Controller 组件返回根 fragment 或层次结构的顶部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55779712/

相关文章:

android - 如何初始化依赖于 View 属性的东西

android - 如果我点击导航 Controller 中的菜单,如何在两个 fragment 目的地之间传递数据?

android - 选择时更改 Android BottomBar 图标

java - 类似 GridView 的 View 或布局

android - 多个权限并在拒绝时再次询问

android - Jetpack compose 中的 UI 状态无法正常工作

java - androidx.security 依赖问题

Android Compose setupWithNavController

java - 小部件点击无响应

android - 为什么在导航 Controller 中实现包含时出现 StackOverflowError?