gpt4 book ai didi

android - 使用导航组件实现 BottomNavigationView 的后退按钮行为

转载 作者:行者123 更新时间:2023-12-04 15:35:23 25 4
gpt4 key购买 nike

我为 android 导航组件创建了一个 nav_graph.xml 并为四个不同的 View 添加了四个 fragment 。现在添加BottomNavigationView和菜单项,使用来自 nav_graph 的 fragment ID,并将这些 ID 提供给每个菜单项以进行底部导航。它工作并从底部导航 View 显示选定菜单项的特定 fragment 。

<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/nav_fragmentA"
android:title="@string/menu_search"
android:icon="@drawable/ic_search" />
<item android:id="@+id/nav_fragmentB"
android:title="@string/menu_settings"
android:icon="@drawable/ic_add" />
<item android:id="@+id/nav_fragmentC"
android:title="@string/menu_navigation"
android:icon="@drawable/ic_action_navigation_menu" />
<item android:id="@+id/nav_fragmentD"
android:title="@string/menu_navigation"
android:icon="@drawable/ic_action_navigation_menu" />
</menu>

问题:当用户多次按下任何菜单项并按下后退按钮时。它在整个返回堆栈中导航,而不是转到第一个菜单项并退出应用程序。

例如

  • 四个底部菜单项:A B C D
  • 用户导航:A->C->B->D->B->C-A->D
  • 后退按钮行为:D->A->C->B->D-B->C->A->退出(用户导航的反向)

想要实现如下行为:

  • 用户浏览菜单项:A->C->B->D->B->C-A->D(任意随机导航)
  • 后退键:D->A->退出(从任意选中项到第一项再退出)

最佳答案

我遇到了同样的问题。

底部导航和导航组件之间的集成需要每个 fragment/选项卡的单独导航图以及包含所有这些选项卡的父导航图。

父导航图不能包含任何其他 fragment 。它只能包含每个选项卡的包含标签。

例子:

    <?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:startDestination="@id/home"
android:id="@+id/bottom_nav">

<include app:graph="@navigation/frag1" />
<include app:graph="@navigation/frag2" />
<include app:graph="@navigation/frag3" />

</navigation>

sample由架构组件给出也很有帮助。

关于android - 使用导航组件实现 BottomNavigationView 的后退按钮行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59944198/

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