Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Fragment not associated with a fragment manager. (Dialog Fragment)

I have a dialog fragment, and i make a class for lazy initialization. When i'm showing the dialog, it's showing like normal. but, when i'm dismissing the dialog, it crash caused by : Fragment not associated with a fragment manager.

i have tried to postDelayed dimiss too, but still crashing.

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()

enter image description here

like image 411
Ichvandi Octa Avatar asked Nov 24 '25 15:11

Ichvandi Octa


1 Answers

You may be trying to dismiss it in the onDestroy method of a fragment, that was my case at least. Move the dismiss method call to the onStop of your activity or a fragment.

like image 142
Wackaloon Avatar answered Nov 26 '25 06:11

Wackaloon



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!