Ars*_*ius 9 navigation android android-fragments android-sdk-tools android-jetpack
我有一个 BottomNavigationView,我想用它在三个或四个不同的片段之间导航。如果我实例化了一个片段,我不想再为同一个片段做一次,我只想重用它。NavOptions 类提供 launchSingleTop 属性以避免创建新实例,如果这种实例已经在返回堆栈的顶部。但是对于导航控制器中的片段返回堆栈的 singleTask 或 singleInstance 选项如何?如果我不需要创建新的片段实例,如果它已经在后台堆栈中,而我只想把它放在最上面?如何使用 Jetpack 的导航架构组件实现这一点?
我刚刚偶然发现了这个问题,终于找到了解决方案。您可以使用popUpTo它来实现它。
例如,您有主页、登录和注册片段。
从片段主页,您导航到“登录”,然后导航到“注册”,然后再次导航到“登录”。为了防止重复的登录片段,您应该设置popUpTo="@id/login_fragment"该操作。
<action
android:id="@+id/action_navigation_register_to_navigation_login"
app:destination="@id/navigation_login"
app:popUpTo="@id/navigation_login" />
Run Code Online (Sandbox Code Playgroud)
堆栈可视化:
Register
____
Login ==> Login ==> Login
____ ____ ____
Home Home Home
Run Code Online (Sandbox Code Playgroud)