hegaojian / MvvmHelper

:chicken::basketball:这是一个快速开发的框架,Kotlin语言开发,MVVM+Jetpack架构,封装了公共头部、界面状态管理、ViewModel、LiveData、DataBinding、ViewBinding头部刷新、加载更多、沉浸式、全局通知、丰富好用的拓展函数、RxHttp网络请求等等一系列工具
Apache License 2.0
413 stars 58 forks source link

Dialog 弹框有个小bug #24

Closed bingdu0 closed 2 years ago

bingdu0 commented 2 years ago
/**
 * 打开等待框
 */
fun Fragment.showLoadingExt(message: String = "请求网络中...") {
    dismissLoadingExt()
    activity?.let {
        if (!it.isFinishing) {
            if (loadingDialog == null) {
                //弹出loading时 把当前界面的输入法关闭
                it.hideOffKeyboard()
                loadingDialog = Dialog(requireActivity(), R.style.loadingDialogTheme).apply {
                    setCancelable(true)
                    setCanceledOnTouchOutside(false)
                    setContentView(
                        LayoutInflater.from(it)
                            .inflate(R.layout.layout_loading_view, null).apply {
                                this.findViewById<TextView>(R.id.loading_tips).text = message
                            })
                }
                loadingDialog?.setOnDismissListener {
                    //设置dialog关闭时 置空 不然会出现 一个隐藏bug 这里就不细说了
                    dismissLoadingExt()
                }
            }
            loadingDialog?.show()
        }
    }
}

第一次调用没问题,如果在显示的时候进入后台,然后在从后台进前台 就不显示了。

hegaojian commented 2 years ago

这个我复现不出来啊

bingdu0 commented 2 years ago

这个我复现不出来啊

这地方为什么要调用两遍dismissLoadingExt() ?第一次调用的时候掉了,然后监听消失的时候也调用了?

hegaojian commented 2 years ago

调用的时候调用dismissLoadingExt() ,是防止这个loading在其他地方使用了,要先销毁,setOnDismissListener 这个应该是版本迭代遗留下来的代码,之前dismissLoadingExt 就是只调用dialog.dismiss

hegaojian commented 2 years ago

你现在用的版本号是多少

bingdu0 commented 2 years ago

我现在用的 1.1.4,那setOnDismissListener 的这个监听还有用吗?没用的话可以去掉吗?

hegaojian commented 2 years ago

1.1.4版本按理来说没有这个问题啊,我目前的项目就是用得他没有发现什么异常

我现在用的 1.1.4,那setOnDismissListener 的这个监听还有用吗?没用的话可以去掉吗?

这个代码不能去,突然想起来,用户按返回键时会触发这个onDismiss 方法需要置空