【问题标题】:Navigation Architecture Component singleTask or singleInstance in back stack导航架构组件 singleTask 或 singleInstance 在返回堆栈中
【发布时间】:2019-07-15 15:19:05
【问题描述】:

我有一个 BottomNavigationView,我想用它在三个或四个不同的片段之间导航。如果我实例化了一个片段,我不想再为同一个片段做一次,我只想重用它。 NavOptions 类提供launchSingleTop 属性以避免创建新实例,如果这种实例已经在后堆栈的顶部。但是导航控制器中的片段返回堆栈的 singleTask 或 singleInstance 选项怎么样?如果我不需要创建片段的新实例,如果它已经在后堆栈中并且我只想将它放在顶部?如何使用 Jetpack 的导航架构组件实现这一点?

【问题讨论】:

标签: android android-fragments navigation android-sdk-tools android-jetpack


【解决方案1】:

我只是偶然发现了这个问题,我终于找到了解决方案。你可以使用popUpTo来实现。

例如,您有片段 Home、Login 和 Register。

从片段主页,导航到登录,然后到注册,然后再次登录。为防止重复登录片段,您应该将popUpTo="@id/login_fragment" 设置为操作。

<action
    android:id="@+id/action_navigation_register_to_navigation_login"
    app:destination="@id/navigation_login"
    app:popUpTo="@id/navigation_login" />

堆栈可视化:

             Register
             ____
Login  ==>   Login   ==>   Login
____         ____          ____
Home         Home          Home

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-31
    • 2020-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多