带有ProgressDialog的Android WebView。我怎么杀它?

带有ProgressDialog的Android WebView。我怎么杀它?,android,webview,progressdialog,Android,Webview,Progressdialog,我已经尽了我所能杀死它。我想让它做的是加载网页,然后杀死ProgressDialog。怎么办 package com.calebfultz.package; import android.app.Activity; import android.app.ProgressDialog; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.view.View

我已经尽了我所能杀死它。我想让它做的是加载网页,然后杀死ProgressDialog。怎么办

package com.calebfultz.package;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;

public class Lists extends Activity {
    private WebView webView;


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.web);
        ProgressDialog pd = ProgressDialog.show(Lists.this, "", 
                "Loading. Please wait...", true);
        // Create reference to UI elements
        webView  = (WebView) findViewById(R.id.web_engine);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl("http://cfultz.tumblr.com");


        // workaround so that the default browser doesn't take over
        webView.setWebViewClient(new MyWebViewClient()

        );

    }


    private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }    
}

您可能希望将ProgressDialog变量作为Lists类的成员变量,并在shouldOverrideUrlLoading方法中添加行

pd.dismiss();

您可能希望将ProgressDialog变量作为Lists类的成员变量,并在shouldOverrideUrlLoading方法中添加行

pd.dismiss();

我认为您可以覆盖MyWebViewClient中的onPageFinished函数:您可以在该函数中关闭ProgressDialog。或者您可以覆盖MyWebChromeClient(扩展WebChromeClient)中的onProgressChanged:当进度为100时,您可以关闭ProgressDialog。

我认为您可以覆盖MyWebViewClient中的onPageFinished函数:您可以关闭此函数中的ProgressDialog。或者您可以覆盖MyWebChromeClient(扩展WebChromeClient)中的onProgressChanged:当进度为100时,您可以关闭ProgressDialog。

请查看以下代码:

// the init state of progress dialog
mProgress = ProgressDialog.show(this, "Loading", "Please wait for a moment...");               
// add a WebViewClient for WebView, which actually handles loading data from web
                mWebView.setWebViewClient(new WebViewClient() {
                    // load url
               public boolean shouldOverrideUrlLoading(WebView view, String url) {
                        view.loadUrl(url);
                    return true;
                    }

                    // when finish loading page
                    public void onPageFinished(WebView view, String url) {
                        if(mProgress.isShowing()) {
                            mProgress.dismiss();
                    }
                    }
                });
这对我来说很好………享受。

请查看以下代码:

// the init state of progress dialog
mProgress = ProgressDialog.show(this, "Loading", "Please wait for a moment...");               
// add a WebViewClient for WebView, which actually handles loading data from web
                mWebView.setWebViewClient(new WebViewClient() {
                    // load url
               public boolean shouldOverrideUrlLoading(WebView view, String url) {
                        view.loadUrl(url);
                    return true;
                    }

                    // when finish loading page
                    public void onPageFinished(WebView view, String url) {
                        if(mProgress.isShowing()) {
                            mProgress.dismiss();
                    }
                    }
                });
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);

        //start loading animation
            //loading is a ProgressBar type
        this.loading.setVisibility(0);
        view.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress) {
               if(progress >= 100) {
                   this.loading.setVisibility(8);
               } 
            }
        });

这对我来说很好………享受。

谢谢。我试过了,但不幸的是,这会立即终止进度对话框,而不是等待页面加载。谢谢。我已经尝试过了,但不幸的是,这只是立即终止了进度对话框,而不是等待页面加载。
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);

        //start loading animation
            //loading is a ProgressBar type
        this.loading.setVisibility(0);
        view.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress) {
               if(progress >= 100) {
                   this.loading.setVisibility(8);
               } 
            }
        });