问题标签 [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 投票
1 回答
65 浏览

android - 使用导航组件向后导航

在下面,您可以看到我的第一个活动托管一些片段(片段 A、B 和 C) 在此处输入图像描述 的导航图: 这是该导航图的 XML:

如您所见,从片段 C 到第二个主要活动有一个动作,它包含另一组片段。为了完整起见,我还将向您展示该活动的导航图: 在此处输入图像描述

同样,这是第二个导航图的 XML:

当我在片段 E 中时,我想回到片段 C。为此,我在片段 E 中有以下代码:

我在这里所做的是,当单击后退按钮时Fragment E,我会找到 ID 为的第一个导航图的导航控制器,nav_host_fragment然后调用navigateUp(). 由于popUpToandpopUpToInclusive属性,Fragment CFragment D应该在堆栈上。所以,我认为导航回Fragment CfromFragment E可能会奏效。

但这种方法行不通。该应用程序崩溃,但出现以下异常:

有没有人解决这种类型的导航 - 在两个图表之间来回导航?

注意:我有两个活动的原因是活动 1 和 2 的布局之间的差异。活动 1 的布局有一个底部导航菜单和一个导航抽屉,而活动 2 的布局没有它们。

0 投票
2 回答
2872 浏览

android - Android 导航图,嵌套图问题

我希望你们一切都好。

我对导航图有疑问。您可以在下图中看到结构;

在此处输入图像描述 所以我们有2个不同的导航图;navigation_Anavigation_B

我需要导航到嵌套图中的片段,该片段Fragment Y是.Fragment Znavigation_B

问题是;

  • 如果我用<include>for navigation_B,我就不能用 as NavHost
  • 如果我使用不同的导航图并将其添加为上面的嵌套图,我不能将导航目的地用于Fragment Yor Fragment Z

我需要使用navigation_Bas NavHost,还需要能够导航到Fragment Yand Fragment Z。我怎样才能做到这一点?

谢谢!

0 投票
1 回答
1760 浏览

java - Android 导航组件 - 为什么要在导航图中添加参数?

我一直在关注 CodingWithMitch 的教程(和github 代码)来导航组件,但使用的是 Java 而不是 Kotlin。然而,这并没有带来任何问题。

我的问题是,在不使用 Safe Args 的情况下,在nav_graph.xml.

在此示例中,SpecifyAmountFragment需要来自上一个 Fragment 的 String 参数,称为ChooseRecipientFragment

设计视图nav_graph.xml连接ChooseRecipientFragment ---->指定AmmountFragment ---->confirmationFragment的设计视图

来自的代码片段nav_graph.xml

Java代码:

我在 OnCreateView 中接收包,从中获取我在nav_graph.xml. 稍后,我将在另一个包中(在 中bSend.setOnClickListener(...))发送这些数据。

如果我注释掉所有<argument>标签并再次运行该应用程序,该应用程序仍将正常运行(从一个片段接收数据并将其传递给另一个片段)。没有验证,那么为什么要添加这些标签,除了为了清楚起见?

0 投票
1 回答
729 浏览

android - Can nested NavHosts both be the default nav host (defaultNavHost="true")?

I implemented a navigation structure using two nested NavHostFragmentss. I want the back button to first pop the navigation stack of the child Fragment's navigation graph, and then once back to the start, pop the parent Fragment's graph. This behaviour works when I set app:defaultNavHost="true" for both the parent and child FragmentContainerViews.

But according to the Android documentation:

The app:defaultNavHost="true" attribute ensures that your NavHostFragment intercepts the system Back button. Note that only one NavHost can be the default. If you have multiple hosts in the same layout (two-pane layouts, for example), be sure to specify only one default NavHost.

Is this rule still applicable when using nested NavHosts? What problems could I run into when setting defaultNavHost="true" for multiple/nested NavHosts?

0 投票
3 回答
532 浏览

android - 不透明度的BottomNavigationView背景颜色无法正常工作

我已经用导航图实现了 BottomNavigationView。在导航视图中将纯色设置为背景时,它工作正常,但是当我将背景颜色设置为不透明度时,它无法正常工作。带有背景颜色的图像:#0D000000

这是我的gradle文件:

导航.xml

我的主屏幕xml:

0 投票
1 回答
1811 浏览

java - 为什么不会为导航图片段生成 args 类?

我在我的 android 项目中使用导航组件。我启用了 Gradle 的类型安全 args 插件,这是我的build.gradle(app)文件。

和我的build.gradle(project)文件。

我的导航图xml 代码在这里。

即使在多次尝试构建项目之后,目标片段的args类也没有创建。
这是我的动作发起片段的代码(SignUpFragment)

这是我要访问这些args的片段(SignInFragment)的目标代码。电子邮件密码

根据官方文档,应该在构建项目期间生成SignInFragmentArgs代码,但它不是,我遇到了严重的麻烦,因为我想从SignUpFragment访问那些传递的参数电子邮件密码,但我找不到SignInFragmentArgs类,这意味着它是在构建过程中不会生成。 请在这里的任何人我需要解决方案。

0 投票
1 回答
115 浏览

android - 单击 BottomTabBar 导航上的第一项在 Android 上不起作用

我正在使用带有 Kotlin 的 Android Jetpack 使用 NavigationHostFragment、Navgraph 和 NavController 创建这个 BottomBarNavigation UI。

我有 3 个选项卡,一切都按预期工作,除非我尝试单击第一个选项卡,但它什么也没做。

卡了几天。找不到问题。有任何想法吗?

bottom_tabbar_nav_graph.xml

bottom_tabbar_menu.xml

activity_main.xml

MainActivity.kt

0 投票
1 回答
1732 浏览

android - Android导航组件 - 更改根片段?

假设我有片段 a->b->c ,但是“a”是一个启动画面,所以我希望“b”成为堆栈中的第一个片段并永远抛出“a”,所以当我是“b”时然后按“返回”系统按钮 - 我关闭应用程序

在 SupportFragmentManager 我使用了 replace() 并且有效。但是我怎样才能在这里实现呢?

0 投票
0 回答
758 浏览

android-fragments - FragmentContainerView:来自 NavigationGraph 的片段不会膨胀

所以,我正在关注谷歌的 Kotlin 基础课程和主题 3.2(添加导航抽屉),创建 XML 文件,我在其中添加了一个片段作为 NavHostFragment,它给了我一个警告,用我忽略的 FragmentContainerView 替换它,但我的应用程序继续崩溃给我无法膨胀片段的错误。因此,我将片段替换为 FragmentContainerView。现在我的应用程序启动了,但它不会膨胀在我的导航中设置为起始片段的片段。如果你们能帮助我,那就太好了。TIA。

Activity_main.xml:

主要活动:

导航:

这是我遵循的教程的链接:] 1

0 投票
3 回答
3863 浏览

android - ANDROID 导航组件 + BottomNavigationView 带backstack

我想在我的应用程序中使用来自 jetpack 的导航组件。我可以找到导航组件 + 底部视图导航的基本示例工作,下面我展示了我是如何使用这些示例实现的。但它对我来说不正确 - 它在选项卡之间切换时重新创建片段。但我从谷歌https://github.com/android/architecture-components-samples/blob/master/NavigationAdvancedSample/app/src/main/java/com/example/android/navigationadvancedsample/NavigationExtensions.kt找到了 navigatiom 扩展,但它也不起作用。我按照我的活动说明做所有事情:

我在 onCreate (当 savedInstanceState == null 时)和 onRestoreInstanceState 我的布局文件中调用此函数:

这与示例中的代码完全相同但是这不起作用,不显示片段,并且如果在导航扩展中安装了 setupItemReselected (graphIdToTagMap, fragmentManager),则会在该函数中导致错误 val selectedFragment = fragmentManager.findFragmentByTag (newlySelectedItemTag) with error kotlin.TypeCastException: null cannot be cast to non-null type androidx.navigation.fragment.NavHostFragment,所以片段管理器无法按标签找到片段(?)请帮帮我,我第二天研究这个问题!