ProgressDialog 创建的加载不会停止,加载页面时如何隐藏进度条

Loading created by ProgressDialog wouldn't stop , how to hide progressbar when page is loaded

我是 Java 的新手,正在尝试创建一个网络视图应用程序。加载小部件是使用进度对话框创建的,但它不会停止。我不知道出了什么问题。请帮忙。

public class MainActivity extends AppCompatActivity {
private WebView mywebView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final ProgressDialog pd = ProgressDialog.show(this, "", "Loading...",true);
    mywebView = (WebView) findViewById(R.id.webview);
    mywebView.getSettings().setJavaScriptEnabled(true);
    mywebView.getSettings().setSupportZoom(true);
    mywebView.getSettings().setBuiltInZoomControls(true);
    mywebView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            if(pd!=null && pd.isShowing())
            {
                pd.dismiss();
            }
        }
    });
    mywebView.loadUrl("https://google.com");
    mywebView.setWebViewClient(new WvClient());
}
private class WvClient extends WebViewClient
{
    @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError er) {
        handler.proceed();
    }
}

@Override
public void onBackPressed() {
    if(mywebView.canGoBack())
    {
        mywebView.goBack();
    }
    else
    {
        super.onBackPressed();
    }
}

}

中放置一个断点
onPageFinished

看看监听器是否真的被调用了?

You have declared setWebViewClient twice , ie after load url you again declared the setWebViewClient with your custom client , correct answer is

    public class MainActivity extends AppCompatActivity {
    private WebView mywebView;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final ProgressDialog pd = ProgressDialog.show(this, "", "Loading...",true);
        mywebView = (WebView) findViewById(R.id.webview);
        mywebView.getSettings().setJavaScriptEnabled(true);
        mywebView.getSettings().setSupportZoom(true);
        mywebView.getSettings().setBuiltInZoomControls(true);
    webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
        pd.show();
    }

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

    @Override
    public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
        super.onReceivedError(view, request, error);
         if(pd!=null && pd.isShowing())
            {
                pd.dismiss();
            }
    }
});
        mywebView.loadUrl("https://google.com");
        
    }
   
    
    @Override
    public void onBackPressed() {
        if(mywebView.canGoBack())
        {
            mywebView.goBack();
        }
        else
        {
            super.onBackPressed();
        }
    }
    
    }