使用DialogFragment如果在没有调用过show方法时调用dismiss方法,就会出现异常 java.lang.IllegalStateException: Fragment DialogFragmentName(你自己的类名) not associated with a fragment manager.
弹窗源码:
package com.purui.mobile.widget.dropdown
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.FragmentManager
import com.purui.mobile.R
import com.purui.mobile.base.BaseDialogFragment
import com.purui.mobile.databinding.DialogDropdownListBinding
import com.purui.mobile.utils.DataBindingDifferUtils
import com.purui.mobile.widget.dropdown.adapter.DropDownItem
import com.purui.mobile.widget.dropdown.viewmodel.DialogDropDownViewModel
class NewDialogDropDownList(
val list: List<DropDownItem>?= null,
val onItemSelect: ((DropDownItem) -> Unit)?= null
) : BaseDialogFragment<DialogDropdownListBinding>() {
companion object {
fun start(fragmentManager: FragmentManager, list: List<DropDownItem>, onItemSelect: (DropDownItem) -> Unit) {
NewDialogDropDownList(
list = list,
onItemSelect = onItemSelect
).showNow(fragmentManager, "NewDialogDropDownList")
}
}
private val viewModel: DialogDropDownViewModel by lazy { buildViewModel() }
override fun resourceId() = R.layout.dialog_dropdown_list
override fun initView() {
binding?.vm = viewModel
}
override fun initData() {
DataBindingDifferUtils.updateList(viewModel.list, list)
}
override fun initEvent() {
viewModel.onItemClickCallback = {
binding?.recyclerview?.postDelayed({
onItemSelect?.invoke(it)
dismiss() }, 500
)
}
}
override fun fromTop() = true
override fun needFullScreen() = true
override fun fullScreenHeight():Int = ViewGroup.LayoutParams.WRAP_CONTENT
}
报错: