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

WebView加载页面后ProgressDialog无法关闭,求技术协助

解决WebView加载完成后ProgressDialog无法关闭的问题

嘿,我来帮你搞定这个问题!你现在的核心问题很明确:只实现了页面开始加载时显示ProgressDialog的逻辑,但完全没处理页面加载完成后关闭对话框的操作,所以对话框会一直停在那儿。

下面是具体的修复步骤和优化建议:

1. 重写onPageFinished方法关闭对话框

在你的WebViewClient里,除了onPageStarted,还需要重写onPageFinished方法,在这个方法里关闭ProgressDialog并停止下拉刷新:

// 把static的ProgressDialog改成Fragment的成员变量,避免内存泄漏
private ProgressDialog progressDialog;

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    // 初始化ProgressDialog,放在这里更安全
    progressDialog = new ProgressDialog(getActivity());
    progressDialog.setMessage("Loading...");
    progressDialog.setCancelable(false); // 根据需求设置是否可取消

    mWebView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            swipeRefreshLayout.setRefreshing(true);
            // 检查Activity是否还存在,避免空指针
            if (getActivity() != null && !progressDialog.isShowing()) {
                progressDialog.show();
            }
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            swipeRefreshLayout.setRefreshing(false);
            // 关闭对话框,同样要做空安全检查
            if (progressDialog != null && progressDialog.isShowing()) {
                progressDialog.dismiss();
            }
        }
    });
}

2. 处理Fragment生命周期,避免内存泄漏

在Fragment销毁视图的时候,记得销毁ProgressDialog,防止内存泄漏:

@Override
public void onDestroyView() {
    super.onDestroyView();
    if (progressDialog != null) {
        progressDialog.dismiss();
        progressDialog = null;
    }
}

额外提醒

  • 别用static修饰ProgressDialog:static变量会一直持有Fragment的引用,很容易导致内存泄漏,改成Fragment的成员变量就好。
  • 空安全检查:Fragment和Activity的生命周期绑定,所以操作ProgressDialog前一定要检查Activity是否还存活,避免空指针异常。

这样修改后,WebView加载完成时,ProgressDialog就会自动关闭啦!

内容的提问来源于stack exchange,提问作者Suman Dey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:51:16