判断当前Activity是否有DialogFragment显示

DialogFragment一种情况是在当前Activity上启动,一种情况是在Fragment上启动,判断当前fragmentManager上是否有,以及遍历判断子fragment上是否有,即可确定是否有DialogFragment展示。

使用方式:

复制代码
// supportFragmentManager为当前Activity的fragmentManager
hasDialogFragment(supportFragmentManager)

    private fun hasDialogFragment(fragmentManager: FragmentManager): Boolean {
        if (fragmentManager.fragments.find {
                it is DialogFragment
            } != null) {
            // 存在弹框
            return true
        }

        if (fragmentManager.fragments.find {
                // 子片段管理器中含有弹框
                fragmentHasDialogFragment(it)
            } != null) {
            // 子Fragment上含有弹框
            return true
        }

        return false
    }

    /**
     * 遍历查询fragment上是否有dialogFragment
     */
    private fun fragmentHasDialogFragment(fragment: Fragment): Boolean {
        val childFragments = fragment.childFragmentManager.fragments
        if (childFragments.isEmpty()) {
            return false
        }
        childFragments.forEach {
            if (it is DialogFragment) {
                return true
            }
            if (fragmentHasDialogFragment(it)) {
                return true
            }
        }
        return false
    }
相关推荐
城东米粉儿8 分钟前
Android 插件 笔记
android
Jet_5815 分钟前
一次完整的 Unity Mono 安卓游戏逆向:Frida Hook 绕过碰撞死亡判定
android·游戏·unity
iReachers39 分钟前
为什么HTML打包安卓APP安装时会覆盖或者报错?
android·java·html·html打包apk·网页打包
纟 冬39 分钟前
Flutter & OpenHarmony 运动App运动模式选择组件开发
android·java·flutter
冷雨夜中漫步1 小时前
OpenAPITools使用——FAQ
android·java·缓存
ljt27249606613 小时前
Compose笔记(六十五)--插槽模式
android·笔记·android jetpack
6666v63 小时前
Android Kotlin(3) Flow异步流
android·kotlin
三少爷的鞋3 小时前
为什么你的 SharedFlow 不工作?深挖这 3 个关键参数
android
凛_Lin~~3 小时前
安卓 面试八股文整理(原理与性能篇)
android·java·面试·安卓
花花鱼4 小时前
android 更新后安装app REQUEST_INSTALL_PACKAGES 权限受限 + FileProvider 元数据异常
android