Android 如何在WebView中每次单击链接时显示ProgressDialog

Android 如何在WebView中每次单击链接时显示ProgressDialog,android,progressdialog,Android,Progressdialog,我正在使用带有ProgressDialog的webview。我的问题是,在初始启动时,progressDialog会正确显示并加载,但每当我在webview中单击一个链接(发布链接)时,都不会显示进度。这是密码- public class Xyz extends WebViewClient { public void onLoadResource (WebView view , String url ) { if (progressDialog == null

我正在使用带有ProgressDialog的webview。我的问题是,在初始启动时,progressDialog会正确显示并加载,但每当我在webview中单击一个链接(发布链接)时,都不会显示进度。这是密码-

    public class Xyz extends WebViewClient
{

    public void onLoadResource (WebView view , String url ) {
        if (progressDialog == null ) {
            progressDialog = new ProgressDialog(getActivity());
            progressDialog . setMessage( "Loading..." );
            progressDialog.setIndeterminate(true);
            progressDialog . show();
        }
    }

    public void onPageFinished(WebView view , String url ) {

        if (progressDialog . isShowing()) {
                progressDialog . dismiss();

            }
    }


    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        // TODO Auto-generated method stub

        view.loadUrl(url);
        return true;

    }

}

尝试使用webChoromeClient跟踪webview加载进度,如下所示:

 webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
    progressBar.setProgress(progress);
    if (progress == 100) {
        progressBar.setVisibility(View.GONE);

    } else {
        progressBar.setVisibility(View.VISIBLE);

    }
 }
});
并替换webview客户端,如下所示

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

为了实现你的目标,你正在使用错误的方法。我在这里设置了一个
活动
,它按预期工作。 我使用的是
onPageStarted()
而不是
onLoadResource()

Activity
MainActivity.java

public class MainActivity extends AppCompatActivity {

    ProgressDialog progressDialog;
    WebViewClient mClient;

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

        mClient = new WebViewClient() {

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
                if (progressDialog == null) {
                    progressDialog = new ProgressDialog(MainActivity.this);
                    progressDialog.setMessage("Loading...");
                    progressDialog.setIndeterminate(true);
                }
                if(!progressDialog.isShowing()) {
                    progressDialog.show();
                }
            }

            public void onLoadResource(WebView view, String url) {

            }

            public void onPageFinished(WebView view, String url) {
                if (progressDialog!=null && progressDialog.isShowing()) {
                    progressDialog.dismiss();
                }
            }

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                // TODO Auto-generated method stub
                view.loadUrl(url);
                return true;
            }
        };

        WebView webView = (WebView) findViewById(R.id.webview);
        webView.setWebViewClient(mClient);
        webView.loadUrl("http://www.google.com");
    }
}
布局
活动\u main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.prasad.myapplication.MainActivity">

    <WebView
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
</RelativeLayout>


尝试将
progressDialog.show()
放在
if
块之外。@PrasadPawar你是说这样吗?public void onPageFinished(WebView视图,字符串url){progressDialog.dismise();}不起作用