使用导航组件,Fragment打开一个DialogFragment,这可能会打开第二个DialogFragment。解雇第一个DialogFragment,也会解雇第二个。然而,我喜欢让第二个DialogFragment保持活跃,直到自我解散为止。
也许这是意料之中的。在我的例子中,它是一个打开自定义共享底部工作表对话框的片段。当一个项目被点击后,底部的纸张就会被取消。当单击某项并且结果持久时,将显示一个加载对话框。加载对话框在完成时会自行关闭。
因此,层次结构是: MainFragment -共享DialogFragment -加载DialogFragment。
我尝试使用全局操作(而不是对话框到对话框操作)导航到加载对话框,但这没有任何影响。在共享底部表中使用(它的父) MainFragmentDiretions.action**会导致崩溃。很好,应该是的。
解决办法是:
MainFragment打开加载对话框。我不喜欢任何一个DialogFragments,这取决于它的父级。如果取消共享对话框,如何防止加载对话框被取消,而不将更多的责任转移给MainFragment
发布于 2019-09-08 18:32:47
我认为您正在将对话框片段的ChildFragmentManager传递给加载-对话框框架,您可以使用以下两种方法防止加载对话框被取消:
1)使用android代替DialogFragment。2)通过传递活动的ChildFragmentManager of MainFragment或FragmentManager,下面是一个示例:
class MainFragment : Fragment() {
fun displayDataDialog() {
DataDialogFrag().show(childFragmentManager, DataDialogFrag.TAG)
}
}
class DataDialogFrag : DialogFragment() {
fun displayLoadingDialog() {
val loading = LoadingDialog()
if (parentFragment != null) {
loading.show(parentFragment!!.childFragmentManager, LoadingDialog.TAG)
} else {
loading.show(fragmentManager, LoadingDialog.TAG)
}
}
companion object {
const val TAG = "data_dialog"
}
}
class LoadingDialog : DialogFragment() {
companion object {
const val TAG = "loading_dialog"
}
}https://stackoverflow.com/questions/57844384
复制相似问题