gpt4 book ai didi

android - fragment 未与 fragment 管理器关联。 (对话 fragment )

转载 作者:行者123 更新时间:2023-12-02 12:11:33 25 4
gpt4 key购买 nike

我有一个对话框 fragment ,我为延迟初始化创建了一个类。当我显示对话框时,它显示正常。但是,当我关闭对话框时,它崩溃的原因是: fragment 与 fragment 管理器无关。

我也尝试过发布延迟的解雇,但仍然崩溃。

加载对话框.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()
}
}

懒人对话.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
}

扩展.kt
inline fun <reified T : DialogFragment> FragmentActivity.loadingDialog(): Lazy<T> {
return LazyDialog(T::class.java, supportFragmentManager)
}

登录 Activity .kt
private val loadingDialog: LoadingDialog by loadingDialog()

enter image description here

最佳答案

您可能试图在 onDestroy 中忽略它。 fragment 的方法,至少我是这样。移动dismissonStop 的方法调用您的 Activity 或 fragment 。

关于android - fragment 未与 fragment 管理器关联。 (对话 fragment ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62369821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com