在android应用中单击Webview上的新链接时,每次都需要加载程序

Neo*_*Neo 1 android webview android-layout android-webview

我希望每次单击webview内的任何链接时都显示加载程序。

目前application start只有它显示我loader

使用以下代码

每个负载加载器有时会来一些时间,有时不是,不确定为什么会发生。

// Force links and redirects to open in the WebView instead of in a browser
    mWebView.setWebViewClient(new WebViewClient() {      
            ProgressDialog progressDialog = null;

        //If you will not use this method url links are opeen in new brower not in webview
        public boolean shouldOverrideUrlLoading(WebView view, String url) {    
     if (progressDialog == null) {
                // in standard case YourActivity.this
                progressDialog = new ProgressDialog(MainActivity.this);
                progressDialog.setMessage("Loading...");
                progressDialog.show();
            }          
            view.loadUrl(url);
            return true;
        }

        //Show loader on url load
        public void onLoadResource (WebView view, String url) {
            if (progressDialog == null) {
                // in standard case YourActivity.this
                progressDialog = new ProgressDialog(MainActivity.this);
                progressDialog.setMessage("Loading...");
                progressDialog.show();
            }
        }


        public void onPageFinished(WebView view, String url) {
            try{
            if (progressDialog.isShowing()) {
                progressDialog.dismiss();
                progressDialog = null;
            }   
            }
            catch(Exception exception){
                exception.printStackTrace();
            }
        }

        //Show error page
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            mWebView.loadUrl("file:///android_asset/error.html");
        }             
    }); 

     // Javascript enabled on webview  
    mWebView.getSettings().setJavaScriptEnabled(true);         



    //Load url in webview
    mWebView.loadUrl(url);

}
Run Code Online (Sandbox Code Playgroud)

Md.*_*mun 5

尝试这个:

   @Override
   public boolean shouldOverrideUrlLoading(WebView view, String url) {    
   if (progressDialog == null) {
            // in standard case YourActivity.this
            progressDialog = new ProgressDialog(MainActivity.this);
            progressDialog.setMessage("Loading...");
            progressDialog.show();
        }          
        view.loadUrl(url);
        return true;
    }

  @Override
    public void onPageFinished(WebView view, String url) {

        super.onPageFinished(view, url);
        try {

            if (progressDialog .isShowing()) {

                progressDialog .dismiss();

                progressDialog = null;

            }

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

    }

 @Override
 public void onLoadResource (WebView view, String url) {

 }

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

        super.onPageStarted(webView, url, favicon);

        if (progressDialog == null) {
            // in standard case YourActivity.this
            progressDialog = new ProgressDialog(MainActivity.this);
            progressDialog.setMessage("Loading...");
            progressDialog.show();
        }            

 }
Run Code Online (Sandbox Code Playgroud)