Android 导航 popBackStack 与 findNavController().popBackStack(R.id.f1, false) 有不同的行为

问题描述

我使用带有 safeArgs 的 Android 导航。

我有带有 TabLayout 的片段 1 F1。 我有一个带有按钮的片段 2 F2,它应该导航到片段 F1 并清除返回堆栈历史记录。

如果我在后退按钮上使用没有 navigation(action) 的简单代码,它运行良好,甚至可以转到我想要的最后一个选定的选项卡。

btnBack.setonClickListener { v: View ->
    v.findNavController().popBackStack(R.id.f1,false)
}

如果我定义了动作并按照我期望的方式使用它来模拟上面的行为,它的工作方式略有不同。

<action
    android:id="@+id/action_F2_to_F1"
    app:destination="@id/f1"
    app:popUpTo="@id/f1"
    app:popUpToInclusive="false" />
btnBack.setonClickListener { v: View ->
    val action = MyDirections.action_F2_to_F1()
    v.findNavController().navigate(action)
}

应用导航到 F1,但它也忘记了最后选择的选项卡。我知道我可以在 viewmodel 中保留选定的选项卡,但坦率地说,这真的很痛苦,而且要让它工作。

关于如何正确处理导航操作的任何建议?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)