gpt4 book ai didi

android - 如何使用嵌套的 navGraph 和底部导航 View 进行导航

转载 作者:行者123 更新时间:2023-12-02 11:19:58 25 4
gpt4 key购买 nike

我有 3 个项目的底部导航 View ,我的 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 fragment 的底部导航 View 中的导航正常工作,但如果我导航到 settings_fragment ,它在嵌套的 navGraph 之外,我点击了其他项目/fragment ,我无法导航到其他 fragment ,我基本上卡在了这个屏幕上。

我检查了如果我把 settings_fragment在嵌套的 navGraph 内,效果很好。

我该如何解决这个问题?

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

我的菜单项:
<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"
/>

最佳答案

问题与导航图的结构有关。

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

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

因此,鉴于上面的说明,您将只能使用底部导航在 settings 之间导航。和 nested_navigation而这将是 mainFragment .

如果您要在 settings 之间导航和 list这是不可能的。

请注意 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" />

注意 id两个元素中的 id 完全匹配的 root目的地。

额外

也许我的其他答案可能有助于补充导航流程-> How to switch to other fragment in different back stack using Navigation Component?

关于android - 如何使用嵌套的 navGraph 和底部导航 View 进行导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61664861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com