片段未与片段管理器关联。 (对话片段)
Posted
技术标签:
【中文标题】片段未与片段管理器关联。 (对话片段)【英文标题】:Fragment not associated with a fragment manager. (Dialog Fragment) 【发布时间】:2020-10-03 18:41:35 【问题描述】:我有一个对话框片段,并且我为延迟初始化创建了一个类。当我显示对话框时,它显示正常。但是,当我关闭对话框时,它崩溃的原因是:Fragment not associated with a fragment manager。
我也尝试过发布Delayed dimiss,但仍然崩溃。
LoadingDialog.kt
class LoadingDialog(private val fm: FragmentManager) : DialogFragment()
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View?
isCancelable = false
return inflater.inflate(R.layout.dialog_loading, container, false)
fun showDialog(tag: String? = null)
show(fm, tag)
fun closeDialog()
dismiss()
LazyDialog.kt
class LazyDialog<T : DialogFragment>(private val type: Class<T>, private val fm: FragmentManager) :
Lazy<T>
private var dialog: T? = null
override val value: T
get()
return when
type.isAssignableFrom(LoadingDialog::class.java) ->
LoadingDialog(fm).also
dialog = it as T
as T
else -> throw IllegalArgumentException("Unknown class : $type.name")
override fun isInitialized(): Boolean = dialog != null
Extensions.kt
inline fun <reified T : DialogFragment> FragmentActivity.loadingDialog(): Lazy<T>
return LazyDialog(T::class.java, supportFragmentManager)
LoginActivity.kt
private val loadingDialog: LoadingDialog by loadingDialog()
【问题讨论】:
【参考方案1】:您可能试图在片段的onDestroy
方法中将其关闭,至少我是这样。将dismiss
方法调用移动到您的活动或片段的onStop
。
【讨论】:
以上是关于片段未与片段管理器关联。 (对话片段)的主要内容,如果未能解决你的问题,请参考以下文章