以下是代码:
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
回调中的活动为空。有人可以向我解释为什么会这样吗?感谢。
答案 0 :(得分:1)
感谢您的翻译;)Kotlin很有意思,但我非常喜欢那里的初学者。
我可以看到的是,在onCreateDialog()
中,您将侦听器设置为当前DialogFragment
。我怀疑在方向改变之后显示的Dialog
仍然保留在听众身上。由于此侦听器(=原始DialogFragment
)不再附加到Activity
,getActivity()
activity
分别为null
DialogFragment
。因此,您必须将侦听器设置为可以确保Activity
附加到当前q1 :: [Int] -> Int
q1 [] = 0
q1 [x] = x
q1 (x:_:xs) = max x (q1 xs)
的位置。