微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。