问题标签 [android-navigation-graph]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
15334 浏览

android - 为什么Android导航组件屏幕不会回到上一个Fragment,而是调用上一个Fragment的onViewCreated中的一个方法?

我有 2 个片段调用CreateRoomFragmentDisplayPhotoFragment导航图如下所示:

因此,当我想从 to 移动时CreateRoomFragmentDisplayPhotoFragment我使用如下操作:

这样做,我可以导航到DisplayPhotoFragment.

但是当我按下back设备的按钮以及Back arrow工具栏中的按钮时,它无法返回CreateRoomFragment

我试过这个,但仍然无法回到上一个片段:

现在主要问题:

通过使用上面的代码,屏幕没有回到之前的Fragment( CreateRoomFragment)。它仍然卡在DisplayPhotoFragment,但同时调用了CreateRoomFragment onViewCreatedsection中的API方法。

这是什么原因造成的?我该如何解决这个问题?

0 投票
1 回答
699 浏览

android - 将参数传递给嵌套图的 startDestination

我在单独的文件中创建了多个图表。

第一个是GraphA,它包括GraphB。GraphBstartDestinationFragmentB ,它有一个名为AnID的参数

现在我想将AnIDGraphA传递给GraphB ( FragmentB )

尽管编辑器知道该参数,但生成的代码不考虑该参数:

在此处输入图像描述

如何将参数传递给嵌套图?

0 投票
1 回答
768 浏览

android - 如何在子片段中实现导航控制器?

我在我的 activity_main 中定义了一个导航控制器片段,它具有匹配父级的高度和宽度。因此,当我在片段之间导航时,它会替换整个屏幕。现在假设我导航到加载材料卡的片段。我希望那个材质卡有自己的导航控制器,它占据了材质卡的高度和宽度。所以当我使用它的导航控制器时,它只会替换素材卡视图中的片段,不会改变父视图。

有没有办法拥有两个导航主机片段?所以我可以在 activity_main 中定义一个,然后在子片段中定义另一个。

活动主:

子片段:

0 投票
0 回答
723 浏览

android - Android导航组件:通过特定索引弹出回栈的自循环目的地

我有一个这样的导航图

导航图

这是一个文件夹/文件列表应用程序,当单击一个文件夹时,它将通过图表定义的操作导航到具有新实例的相同片段。在我导航到一些文件夹并且当前在文件夹 D 中后,按钮的面包屑如下所示。

根目录 -> 文件夹 A -> 文件夹 B -> 文件夹 C -> 文件夹 D

当我单击面包屑上的文件夹 B 时,如何弹出或导航回后堆栈中的“文件夹 B”片段?

编辑:导航代码

0 投票
1 回答
886 浏览

android - 带有嵌套底部导航的 Android 导航

我是 Android 导航组件的新手,想了解如何在我想要使用单一活动方法的相对简单的场景中使用它。我显然希望系统处理后台堆栈,也用于底部导航。

我需要的是2个非常简单的案例:

1. 混合目的地

我的导航图中的一些目的地有底部导航,而有些则没有。想象一下,我有一个没有底部导航的登录流程,然后转到我有底部导航的“真实应用程序”。谷歌表示将底部导航、抽屉、操作栏放在导航图之外,这意味着它们会显示在所有目的地。

导航组件是否支持此功能?没有隐藏/显示底部导航的肮脏技巧。

2.全屏弹窗

另一个问题 - 是否支持多个导航主机?想象一下,我有一个带有底部导航和操作栏的 UI,它们位于导航主机区域之外。但随后我需要显示一个全屏弹出窗口,如对话框或资源选择屏幕,它也会越过底部导航和操作栏。

我可以将其作为导航图中的目的地吗?


对于这两个问题,任何概念上支持的解决方案都对我有好处,包括在导航期间切换图表/主机。

0 投票
1 回答
722 浏览

android-databinding - androidx.navigation:navigation-fragment:2.2.0, get "You must call removeView() on the child's parent first." 在 navController.popBackStack()

我喜欢使用数据绑定和导航图。但是在从 androidx.navigation:navigation-fragment:2.0.0 更新 androidx 依赖项后,2.2.0 应用程序在按下“返回”按钮后崩溃。从其他片段返回到包含 FragmentPagerAdapter 的前一个片段后总是崩溃。

build.gradle

如需查看问题和错误,请从https://github.com/ABRadzh/ErrorNavigation下载示例。否则我将很难解释错误发生在哪里。

  1. 按任何页面上的任何按钮。
  2. 按硬件“返回”按钮。
  3. 获取错误信息:

但是所有转换片段和数据绑定的代码都是自动生成的。我不知道我必须在哪里调用 removeView()。

如果您尝试使用旧的依赖项,请反转代码和布局中的所有注释。popBackStack() 将正常工作。

我没有发现有关此错误的任何信息。可能是,我做错了什么?

0 投票
0 回答
562 浏览

android - 使用 BottomNavigationView 和 SplashScreenFragment 作为 startDestination 的 Android 导航组件

目前我正在尝试实现启动时为 SplashScreenFragment 的应用程序,几秒钟后我切换到屏幕BottomNavigationView

然后我定义bottom_nav_menu.xml如下:

导航组件版本:

bottomNavigationView.setupWithNavController(findNavController(R.id.nav_host_fragment))现在,在活动布局内部定义的Activity位置调用之后,nav_host_fragment一切似乎都可以正常工作。

问题是,当用户按下后退按钮或在两个菜单项之间来回导航时,不会清除 backstack,这意味着在单击到 feature1 -> feature2 -> feature1 -> feature2 后,当用户按下后退按钮时导航如下: feature1 -> feature2 -> feature1 -> 在应用程序之外(原因popUpToInclusiveon SplashScreenFragment),而所需的后退导航是: feature1 -> 在应用程序之外。

有人成功尝试使用BottomNavigationView底部导航的第一项不是导航图的 startDestionation 吗?

已编辑,因为似乎问题是 startDestination 不包括图表

0 投票
1 回答
555 浏览

android - 使用导航组件深度链接处理数组查询参数

我在我的项目中使用单个活动结构,并且我想使用导航组件处理深度(应用程序)链接。一切都很好,但我无法处理数组查询参数。我想将complex_types作为字符串数组。

现有网址:

nav_graph.xml:

我不知道必须使用什么类型的 argType 而不是??? complexFilters参数中。

0 投票
1 回答
271 浏览

android - 如果使用导航架构组件已经存在片段,如何避免将片段添加到后台堆栈?

我正在使用导航组件,所以我没有使用 FragmentManager。假设我有片段 A,B。

如果用户导航 A -> B -> A -> B 然后按下后退按钮,我希望 backstack 只是 A 而不是 A -> B -> A。换句话说,如果 Fragment 已经存在,请不要添加它在后台。不使用 FragmentManager 这可能吗?

0 投票
4 回答
2210 浏览

android - FragmentContainerView 和 app:navGraph - 此导航图未引用任何布局文件

为了防止升级到最新片段(1.2.2 版本)和导航(2.2.1 版本)后出现 Lint 警告(替换为),我将片段替换fragmentFragmentContainerViewFragmentContainerView

但在那之后我发现我的错误@navigation/nav_graph- 此导航图未引用任何布局文件

一切正常,但该错误非常烦人。