DialogFragment。监听器。方向改变了。活动为空

时间:2017-12-16 19:26:23

标签: android

以下是代码:

class AddVideoDialog : DialogFragment(), EnterPasswordDialog.OKDialogListener
{
    @SuppressLint("InflateParams")
    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog
    {
        .
        .
        .
        enterPasswordDialog.show(fragmentManager, "enterPassword")
        enterPasswordDialog.mListener = this
        .
        .
        .
        return builder.create()
    }

    override fun onDialogOK()
    {
        .
        .
        .
        //The problem is here! activity is null after orientation change.
        val mainFragment = activity.fragmentManager.findFragmentByTag(Brain.MAIN_FRAGMENT_TAG) as MainFragment
        .
        .
        .
    }
}

当显示上述DialogFragment时,如果用户执行方向更改,则OKDialogListener回调中的活动为空。有人可以向我解释为什么会这样吗?感谢。

1 个答案:

答案 0 :(得分:1)

感谢您的翻译;)Kotlin很有意思,但我非常喜欢那里的初学者。

我可以看到的是,在onCreateDialog()中,您将侦听器设置为当前DialogFragment。我怀疑在方向改变之后显示的Dialog仍然保留在听众身上。由于此侦听器(=原始DialogFragment)不再附加到ActivitygetActivity() activity分别为null DialogFragment。因此,您必须将侦听器设置为可以确保Activity附加到当前q1 :: [Int] -> Int q1 [] = 0 q1 [x] = x q1 (x:_:xs) = max x (q1 xs) 的位置。

相关问题