【问题标题】:Keeping DialogFragment in backstack after navigation to another Fragment in Jetpack Navigation导航到 Jetpack Navigation 中的另一个 Fragment 后将 DialogFragment 保留在 backstack 中
【发布时间】:2021-09-16 07:50:42
【问题描述】:
我正在为应用程序中的对话框使用 Jetpack Navigation。基本上,我正在使用生成的操作方法从 DialogFragment 导航到另一个片段。但是,当我在导航的 Fragment 中按下返回按钮或调用 findNavController().popBackStack() 时,它不会导航回 DialogFragment,而是将我带回到打开 DialogFragment 的原始 Fragment。有没有办法将 DialogFragment 保留在后台堆栈中,而无需任何解决方法,例如在我返回后立即手动再次显示对话框。
先谢谢了。
【问题讨论】:
标签:
android
navigation
android-jetpack-navigation
【解决方案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
}
}