在NavController导航图Android中处理导航堆栈?

时间:2020-06-08 09:55:08

标签: android navigation fragment android-architecture-navigation android-jetpack-navigation

工具栏上有一个设置按钮,可打开一个片段,其中包含用于打开更多片段的选项列表。

“设置”页面有2个选项

  • 个人资料
  • 更改密码

用户可以导航到任何页面,并且每个页面上的用户都可以看到工具栏

如果我单击配置文件->启动配置文件片段->然后单击工具栏上的设置->启动设置页面

现在,当我按回去时,我被重定向到我不想发生的Profile Fragment。 它应该重定向到“设置”片段之前的最后访问页面,因为“配置文件”和“密码”片段是“设置”片段的子片段

这是我设置片段流程的导航图

 <fragment
    android:id="@+id/settingsFragment"
    android:name="com.mountmeru.view.settings.SettingsFragment"
    android:label="fragment_settings"
    tools:layout="@layout/fragment_settings">
    <action
        android:id="@+id/action_settingsFragment_to_profileFragment"
        app:destination="@id/profileFragment" />
    <action
        android:id="@+id/action_settingsFragment_to_resetPasswordFragment"
        app:destination="@id/resetPasswordFragment" />
</fragment>

这就是我导航到个人资料和密码片段的方式

 view.findNavController().navigate(
        R.id.action_settingsFragment_to_profileFragment)

 view.findNavController().navigate(
        R.id.action_settingsFragment_to_resetPasswordFragment)

1 个答案:

答案 0 :(得分:0)

在ProfileFragment的导航图中,您可以使用:

cartID = cartReference.push().getKey();

您可以找到有关popUpTo和pupUpToInclusive here的更多信息。

您也可以在代码中执行此操作(无需更改导航图):

if (cartID != null && cartID != "") {
      // check here if the cartID is null or it's not been set (equal empty string)
      // this is just an example, modify the condition that fits your use case
}