【问题标题】:Need a loader everytime when click on new link on webview in android app每次在android应用程序中单击webview上的新链接时都需要一个加载器
【发布时间】:2014-03-06 15:36:26
【问题描述】:

我希望每次单击 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);

}

【问题讨论】:

  • 您是否在某处将progressDialog 变量归零?因为没有它,你的 if 只会为真一次......
  • 没有完整代码的更新问题,请咨询
  • 您在哪里关闭对话框?你在哪里清空你的 progressDialog 变量?如果您像您的个人资料所建议的那样有 C# 经验,您应该能够理解为什么您的 if 检查只有一次为真......
  • 我得到了同样的方法,请检查有问题的更新代码。我在 onPageFinished 中做到了
  • 我猜你在 c# 中也进行调试,对吧?试试看!

标签: android android-layout webview android-webview


【解决方案1】:

试试这个:

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

 }

【讨论】:

    【解决方案2】:

    我可以在您的代码中发现几个问题。

    1. 请不要从shouldOverrideUrlLoading 拨打WebView.loadUrl。这不是必需的,实际上会创建一个循环。加载已在进行中。

    2. 请显示来自onPageStarted 回调的对话框,并从onPageFinished 中将其关闭(就像你现在一样)。 onLoadResourceonShouldOverrideUrlLoading 不是显示您正在寻找的效果的正确位置。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-23
      • 2015-04-28
      • 1970-01-01
      • 1970-01-01
      • 2019-09-26
      • 2017-02-17
      相关资源
      最近更新 更多