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

时间:2011-04-07 00:37:51

标签: 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.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;
        }
    }    
}

5 个答案:

答案 0 :(得分:2)

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

pd.dismiss();

答案 1 :(得分:2)

public void onPageStarted(WebView view, String url, Bitmap favicon) {
        // Show your progress dialog here

           prDialog = ProgressDialog.show(this, "", "Loading, please wait...", true);

       super.onPageStarted(view, url, favicon);

    }

public void onPageFinished(WebView view, String url) {

          //Finish your progress dialog here


        if (prDialog.isShowing() || prDialog != null) {
            prDialog.dismiss();
        }

        super.onPageFinished(view, url);

    }

答案 2 :(得分:1)

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

答案 3 :(得分:0)

请参阅此代码:

// 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();
                    }
                    }
                });

它对我来说很好.........享受。

答案 4 :(得分:0)

    @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);
               } 
            }
        });