【问题标题】:WebView Progress Dialog won't dismissWebView 进度对话框不会关闭
【发布时间】:2013-01-20 01:49:26
【问题描述】:

当页面加载时,我会显示进度对话框,并在页面完成加载时关闭它。之后,如果我向下滚动时加载图片,进度对话框会出现,但在图片加载后不会消失。我该如何解决这个问题?

这是我的代码,使用它你就会明白我的意思。如果您能提供帮助,我将不胜感激。

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends Activity {

    // Declaring
    WebView browser;
    ProgressDialog pd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Initializing
        browser = (WebView) findViewById(R.id.webView1);

        browser.getSettings().setJavaScriptEnabled(true);
        browser.getSettings().setLoadWithOverviewMode(true);
        browser.getSettings().setUseWideViewPort(true);
        browser.getSettings().setBuiltInZoomControls(true);

        // Loading
        browser.loadUrl("http://www.tumblr.com/tagged/cool%20pictures");

        // Progress Dialog
        pd = ProgressDialog.show(MainActivity.this, "",
                "Loading. Please wait...", true);

        browser.setWebViewClient(new WebViewClient() {
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                try {
                    view.loadUrl(url);
                } catch (Exception e) {
                    e.printStackTrace();

                }
                return true;
            }

            public void onLoadResource(WebView view, String url) {
                try {

                    if (pd.isShowing() == false) {
                        pd = ProgressDialog.show(MainActivity.this, "",
                                "Loading. Please wait...", true);
                    }           

                } catch (Exception e) {
                    e.printStackTrace();

                }
            }

            public void onPageFinished(WebView view, String url) {
                if (pd.isShowing()) {
                    pd.dismiss();

                }

            }

        });

    }

}

【问题讨论】:

  • 自从我发布了这个问题,我正在寻找解决方案。有人找到什么了吗?
  • 谢谢。您应该在“编辑”中发布解决方案作为答案并将其标记为答案。它对我有用。
  • 我现在才这样做,很高兴您发现答案有帮助。

标签: android android-webview android-progressbar


【解决方案1】:

经过 3 个小时的搜索,我找到了解决方案。我没有在 onLoadResource 方法中显示 ProgressDialog,而是使用了 onPageStarted 方法。所以我的代码看起来像这样。

import android.graphics.Bitmap;


public void onPageStarted(WebView view, String url, Bitmap favicon) {

            if (pd.isShowing() == false) {
                pd = ProgressDialog.show(MainActivity.this, "",
                        "Loading. Please wait...", true);

            }
        }

【讨论】:

    猜你喜欢
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多