当前位置: 首页 > 知识库问答 >
问题:

如何使用嵌套navGraph和底部导航视图进行导航

吉泰宁
2023-03-14

我有3个项目的底部导航视图,我的navGraph如下所示:

<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
app:startDestination="@id/nested_navigation"

<navigation
    android:id="@+id/nested_navigation"
    app:startDestination="@id/mainFragment" >
    <fragment
        android:id="@+id/mainFragment"
        android:name="com.example.app.ui.main.MainFragment"
        android:label="main_fragment"
        tools:layout="@layout/main_fragment" />
    <fragment
        android:id="@+id/list"
        android:name="com.example.app.ui.main.List"
        android:label="fragment_news_list"
        tools:layout="@layout/fragment_list" />
</navigation>

<fragment
    android:id="@+id/settings"
    android:name="com.example.app.ui.main.Settings"
    android:label="Settings" />
</navigation>

底部导航视图中带有嵌套navGraph片段的导航工作正常,但是如果我导航到settings_fragment,它在嵌套navGraph之外,并且我单击其他项目/片段,我无法导航到其他片段,我基本上被困在这个屏幕上。

我检查了一下,如果我把settings\u片段放在嵌套的navGraph中,效果很好。

我如何解决这个问题?

顺便说一句-我很确定它不相关,但设置片段是位于XML资源而不是布局资源中的PrevisceScreen布局

我的菜单项:

<item
    android:id="@+id/mainFragment"
    android:icon="@drawable/ic_home_black_24dp"
    android:title="@string/home"
    app:showAsAction="ifRoom"
    />
<item
    android:id="@+id/list"
    android:icon="@drawable/ic_format_list_bulleted_black_24dp"
    android:title="@string/news_list"
    app:showAsAction="ifRoom"
    />
<item
    android:id="@+id/settings"
    android:icon="@drawable/ic_settings_black_24dp"
    android:title="@string/settings"
    app:showAsAction="ifRoom"
    />

共有2个答案

何安宜
2023-03-14

底部导航将只考虑根元素。您可以将菜单中的项目重命名为与导航图中相同的名称。

EX。您的嵌套图形名称是home导航-

晁文斌
2023-03-14

问题在于导航图的结构。

底部导航将只考虑根元素。

- nested_navigation (root element) defaults to `mainFragment`
 |- mainFragment (child element)
 |- list (child element)
- settings (root element)

因此,鉴于上面的插图,您将只能利用底部导航在设置nested_navigation之间导航,这反过来将是main Fraank

如果要在设置和列表之间导航,这是不可能的。

请注意,菜单项的id必须与图形目标的id匹配。

例如。

<item
    android:id="@+id/nested_navigation"
    android:icon="@drawable/ic_home_black_24dp"
    android:title="@string/home"
    app:showAsAction="ifRoom" />

<item
    android:id="@+id/settings"
    android:icon="@drawable/ic_settings_black_24dp"
    android:title="@string/settings"
    app:showAsAction="ifRoom" />

请注意,两个元素的idroot目标的id精确匹配。

额外的

也许我的另一个答案可能有助于补充导航流程-

 类似资料:
  • 我的应用程序有问题。我有一个底部导航视图,包含3个不同的片段,尽管目前只有主要的内容。当我试图从左侧的两个片段中的一个移动到主视图时,问题就出现了,即当底部导航视图被隐藏时。我附上了主代码。 PD:我有25.3.1版本的所有库(如果有用的话)。 感谢您的关注。 activity\u main。xml 主要活动。Java语言 我也给你添加了两张图片。 Ofertas片段 主片段

  • 但是,当我初始化BottomNavigationView时,我会得到: 我正在从一个片段初始化BottomNativigationView。我猜这就是问题所在,但我想不出解决办法。 下面是为片段设置导航的活动的BottomNavigationView xml。

  • 是否可以使用底部导航视图和导航组件传递和访问片段中的参数? 我使用一个活动包含多个片段的方法,其中我的顶层片段需要一个参数(通常通过newInstance生成的方法完成)。我看过导航组件开发者指南和codelab,但是它只提到了使用safeargs和在目的地和动作中添加参数标签。 这是我的导航图: 底部导航视图菜单: 主要活动: activity_main.xml 家庭碎片

  • 我有如下的屏幕,其中包含一个导航抽屉和底部导航在同一个屏幕上: 我正在使用Jetpack导航架构组件。 当前问题和我尝试了什么? 单击第二个和第三个底部导航项目会在工具栏上显示返回箭头吗? 已尝试:将与第二和第三底部导航相关联的片段设置为顶级目的地 代替 不起作用。 任何帮助高度赞赏! 我的代码如下所示。 activity_main.xml menu_bottom.xml nav_graph.xm

  • 我在我的项目中实现了Design Support Library 25中的底部导航视图。我在视图中有5个图标。每当选择一个图标时,它都会有一些动画。但当3个或更少的图标未显示任何动画时。我想删除该动画,只需要对图标进行一些颜色更改。我怎样才能做到这一点?做了足够多的谷歌搜索,但找不到解决方案。请帮忙。谢谢

  • 我想在切换项目时切换到底部导航视图的图标。 我有浅蓝色图标和深蓝色图标的选定项目。我正在为每个导航项目使用选择器drawable,但我看到下面这样的图像,灰色为非活动图像,蓝色为活动图像 这是我的代码 bottom_nav_menu 家 和选择器 计划程序选择器 设置选择器 收藏夹选择器 首页选择器 活动代码 我做错了什么?请帮助。。。 编辑:我正在使用以下绘图工具 在此处输入链接描述 在此处输入