在打开新对话框之前关闭对话框并显示新对话框会很快显示底层片段
Dismissing dialog and showing new one shortly shows underlying fragment before opening new dialog
我目前有一个显示 dialogfragment 的片段,当我按下 dialogfragment 上的按钮时,我想显示另一个 dialogfragment。在我的第一个对话框片段中,我有以下方法:
fun showSecondDialog() {
dismiss()
SecondDialog().showDialog(targetFragment!!)
}
showDialog() 看起来像这样:
fun showDialog(fragment: Fragment) {
val fragmentManager = fragment.fragmentManager
val ft = fragmentManager!!.beginTransaction()
val prev = fragmentManager.findFragmentByTag(getName())
if (prev != null) {
ft.remove(prev)
}
ft.addToBackStack(null)
setTargetFragment(fragment, 0)
show(ft, getName())
}
问题是,关闭对话框会立即生效,但在显示新对话框之前有一个间隙,我的底层片段在这里完全可见,这会导致不希望出现的闪烁。
如何立即显示第二个对话框,或者如何知道它何时打开,以便我可以关闭第一个?
我也遇到了同样的问题,但如果它符合您的要求,您可以尝试这样的解决方法:
fun showSecondDialog() {
SecondDialog().showDialog(targetFragment!!)
Handler().postDelayed({ dismiss() }, 1000)
}
Google 建议所有片段膨胀、替换、解散...应该在父 activity 中完成,并且任何片段都不应知道任何其他片段。这样片段就可以像最初设计的那样被重用。
我目前有一个显示 dialogfragment 的片段,当我按下 dialogfragment 上的按钮时,我想显示另一个 dialogfragment。在我的第一个对话框片段中,我有以下方法:
fun showSecondDialog() {
dismiss()
SecondDialog().showDialog(targetFragment!!)
}
showDialog() 看起来像这样:
fun showDialog(fragment: Fragment) {
val fragmentManager = fragment.fragmentManager
val ft = fragmentManager!!.beginTransaction()
val prev = fragmentManager.findFragmentByTag(getName())
if (prev != null) {
ft.remove(prev)
}
ft.addToBackStack(null)
setTargetFragment(fragment, 0)
show(ft, getName())
}
问题是,关闭对话框会立即生效,但在显示新对话框之前有一个间隙,我的底层片段在这里完全可见,这会导致不希望出现的闪烁。
如何立即显示第二个对话框,或者如何知道它何时打开,以便我可以关闭第一个?
我也遇到了同样的问题,但如果它符合您的要求,您可以尝试这样的解决方法:
fun showSecondDialog() {
SecondDialog().showDialog(targetFragment!!)
Handler().postDelayed({ dismiss() }, 1000)
}
Google 建议所有片段膨胀、替换、解散...应该在父 activity 中完成,并且任何片段都不应知道任何其他片段。这样片段就可以像最初设计的那样被重用。