判断当前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
    }
相关推荐
非凡ghost6 小时前
PowerDirector安卓版(威力导演安卓版)
android·windows·学习·软件需求
独行soc6 小时前
2026年渗透测试面试题总结-19(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
爱装代码的小瓶子8 小时前
【C++与Linux基础】进程间通讯方式:匿名管道
android·c++·后端
兴趣使然HX8 小时前
Android绘帧流程解析
android
JMchen1239 小时前
Android UDP编程:实现高效实时通信的全面指南
android·经验分享·网络协议·udp·kotlin
黄林晴9 小时前
Android 17 再曝猛料:通知栏和快捷设置终于分家了,这操作等了十年
android
有位神秘人10 小时前
Android获取设备中本地音频
android·音视频
JMchen12310 小时前
Android网络安全实战:从HTTPS到双向认证
android·经验分享·网络协议·安全·web安全·https·kotlin
CS创新实验室10 小时前
Pandas 3 的新功能
android·ide·pandas
ujainu10 小时前
护眼又美观:Flutter + OpenHarmony 鸿蒙记事本一键切换夜间模式(四)
android·flutter·harmonyos