同时使用两种导航方法。删除最后一个返回堆栈片段

问题描述 投票:0回答:1

我有一些问题。 我的项目使用旧的方法和导航组件。我有以下情况: 我想与一些用户创建聊天。一旦我选择了用户,我应该进入聊天屏幕。聊天活动通过旧方法打开(通过 startActivity)。如果我点击后退导航按钮,我将打开用户选择片段,尽管我需要打开聊天列表片段。 所以我的路径是聊天列表 -> 用户选择片段 -> 聊天活动。但我需要在选择用户后我需要下一种方式:聊天列表 - >聊天活动(从导航组件后台删除用户选择片段)。

我找到了决定,如果我们转到另一个活动并将标志设置为 true,则使用 bool 标志,如果我们返回,则执行 popBackStack() 两次。这是可行的,但在这种情况下,应用程序将片段和 viewModel 存储在内存中,这不是很好。

也许有一个很好的解决方案,关于如何在打开另一个片段之前销毁一个片段(删除用户选择片段并通过startActivity打开聊天活动)。

现在很难完全切换到导航组件。

谢谢!

android android-fragments navigation android-jetpack-navigation
1个回答
0
投票

现在我决定使用以下方法: 当我添加到 Done fun findNavController().popBackStack() 行时。现在我的代码:

父片段(作为超级):

override fun onDoneBtnClicked() {
        viewModel.onDoneBtnClicked(this)
    }

子片段:

override fun onDoneBtnClicked() {
        super.onDoneBtnClicked()
        findNavController().popBackStack()
    }

它正在工作,用户不会看到不必要的动画。

© www.soinside.com 2019 - 2024. All rights reserved.