我目前有一个片段显示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())
}
问题在于,关闭对话框可以立即生效,但是在显示新对话框之前,存在一个间隙,其中我的底层片段是完全可见的,这会导致不希望的闪烁。
如何立即显示第二个对话框,或者如何知道何时打开第二个对话框,以便我可以关闭第一个对话框?
答案 0 :(得分:1)
我也遇到同样的问题,但是如果它可以根据您的要求工作,您可以尝试这样的解决方法:
fun showSecondDialog() {
SecondDialog().showDialog(targetFragment!!)
Handler().postDelayed({ dismiss() }, 1000)
}
答案 1 :(得分:0)
Google建议对所有片段进行充气,替换,关闭...应该在父活动中完成,并且任何片段都不应该对其他任何片段有所了解。这样,片段可以像最初设计的那样被重用。