You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin Android开发:弹窗2显示时如何自动隐藏加载弹窗1

可以实现,核心思路是全局持有加载弹窗(弹窗1)的实例,在显示弹窗2前主动关闭弹窗1即可。


实现步骤

  1. 声明全局的加载弹窗变量
    在你的Activity/Fragment的类内部、方法外层,声明可空的AlertDialog变量,用于持有弹窗1的实例:
private var loadingDialog: AlertDialog? = null
  1. 显示弹窗1(加载提示弹窗)时,将返回的实例赋值给全局变量
    不要直接链式调用show()就结束,需要接收show()方法返回的AlertDialog实例:
// 事件触发时调用这段代码显示加载弹窗
loadingDialog = AlertDialog.Builder(requireActivity())
    .setTitle("提示")
    .setMessage("事件加载中,请稍候...")
    .setCancelable(false) // 可选配置,禁止用户手动关闭加载弹窗
    .show()
  1. 显示弹窗2前先关闭弹窗1
    加载完成后要显示结果弹窗时,先判断加载弹窗是否存在且处于显示状态,先关闭再显示你的弹窗2即可:
// 先关闭加载弹窗
loadingDialog?.takeIf { it.isShowing }?.dismiss()
loadingDialog = null // 置空避免内存泄漏

// 再显示你的成功弹窗
AlertDialog.Builder(requireActivity())
    .setTitle("上传状态")
    .setMessage("图片上传成功!")
    .setPositiveButton(android.R.string.yes) { dialog, which ->
        // 你的业务逻辑
    }
    .setIcon(R.drawable.ic_check_success)
    .show()

额外注意事项

页面销毁时要主动关闭未消失的加载弹窗,避免出现窗口泄漏异常,可以在onDestroy(Activity场景)或者onDestroyView(Fragment场景)中添加如下代码:

override fun onDestroyView() {
    loadingDialog?.takeIf { it.isShowing }?.dismiss()
    loadingDialog = null
    super.onDestroyView()
}

内容的提问来源于stack exchange,提问作者Bluechip Servers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 01:15:03