关闭对话框并显示新对话框会在打开新对话框之前不久显示底层片段

时间:2019-05-30 05:10:34

标签: android kotlin dialogfragment

我目前有一个片段显示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())
}

问题在于,关闭对话框可以立即生效,但是在显示新对话框之前,存在一个间隙,其中我的底层片段是完全可见的,这会导致不希望的闪烁。

如何立即显示第二个对话框,或者如何知道何时打开第二个对话框,以便我可以关闭第一个对话框?

2 个答案:

答案 0 :(得分:1)

我也遇到同样的问题,但是如果它可以根据您的要求工作,您可以尝试这样的解决方法:

fun showSecondDialog() {

    SecondDialog().showDialog(targetFragment!!)

    Handler().postDelayed({ dismiss() }, 1000)

}

答案 1 :(得分:0)

Google建议对所有片段进行充气,替换,关闭...应该在父活动中完成,并且任何片段都不应该对其他任何片段有所了解。这样,片段可以像最初设计的那样被重用。