导航到 Jetpack Navigation 中的另一个 Fragment 后将 DialogFragment 保留在 backstack 中
Posted
技术标签:
【中文标题】导航到 Jetpack Navigation 中的另一个 Fragment 后将 DialogFragment 保留在 backstack 中【英文标题】:Keeping DialogFragment in backstack after navigation to another Fragment in Jetpack Navigation 【发布时间】:2021-09-16 07:50:42 【问题描述】:我正在为应用程序中的对话框使用 Jetpack Navigation。基本上,我正在使用生成的操作方法从 DialogFragment 导航到另一个片段。但是,当我在导航的 Fragment 中按下返回按钮或调用 findNavController().popBackStack() 时,它不会导航回 DialogFragment,而是将我带回到打开 DialogFragment 的原始 Fragment。有没有办法将 DialogFragment 保留在后台堆栈中,而无需任何解决方法,例如在我返回后立即手动再次显示对话框。
先谢谢了。
【问题讨论】:
【参考方案1】:我遇到了同样的问题,使用下面的代码,我可以在导航的Fragment中调用findNavController().popBackStack(),但是我不能回到打开DialogFragment的原始Fragment(Activity)。
dialog.setOnKeyListener dialog, keyCode, event ->
if (keyCode == KeyEvent.KEYCODE_BACK)
this.binding.navHost.findNavController().navigateUp()
return@setOnKeyListener true
else
return@setOnKeyListener false
【讨论】:
以上是关于导航到 Jetpack Navigation 中的另一个 Fragment 后将 DialogFragment 保留在 backstack 中的主要内容,如果未能解决你的问题,请参考以下文章
如何在 JetPack Navigation 组件中托管 Fragment 的 Activity 中调用导航 Fragments 函数?
Jetpack Compose Navigation - 底部导航多个返回堆栈 - 查看模型范围问题