在WebView加载url后,Dismiss ProgressDialog不起作用

时间:2017-06-12 15:33:21

标签: android url webview dialog progressdialog

我创建了一个webview,当页面加载时,会有一个ProgressDialog。好吧,直到这一切都有效。 但是现在我想要在加载url后解除ProgressDialog。 这不起作用。

我的代码:

$ ->
  $('.datepicker').datepicker()
  return

$('.flexdatalist').flexdatalist minLength: 1


$(document).ready ->
  $('.phoneMask').inputmask '(99) 9999[9]-9999'
  $('.cpfMask').inputmask '999.999.999-99'
  $('.cnpjMask').inputmask '99.999.999/9999-99'
  $('.dateMask').inputmask '99/99/9999'
  return


$ ->
  $('.valorMask').maskMoney()
  return

3 个答案:

答案 0 :(得分:1)

将变量传递给匿名类时,变量会自动变为final,从而阻止变量。尝试将进度对话框作为内部客户端类的成员。这也是一种更好的设计,使您的代码更易于维护。

class MyClient extends WebViewClient() {
      private ProgressDialog progressDialogWebViewNews;

      public MyClient(Context c){
             progressDialogWebViewNews = new ProgressDialog(c);
      }

      @Override
      public void onPageStarted(WebView view, String url, Bitmap favicon) {
          super.onPageStarted(view, url, favicon);
          progressDialogWebViewNews.setCancelable(false);
          progressDialogWebViewNews.setTitle("Demo...");
          progressDialogWebViewNews.setMessage("Demo");
          progressDialogWebViewNews.show();
      }

      @Override
      public void onPageFinished(WebView view, String url) {
          progressDialogWebViewNews.dismiss();
          super.onPageFinished(view, url);
      }
}

webViewNews.setWebViewClient(new MyClient(MainActivity.this)); 

答案 1 :(得分:0)

删除super.onPageFinished(view, url),然后首先检查是否显示进度对话框,然后再在回调方法中将其关闭。

If (progressDialogWebViewNews.showing){
progressDialogWebViewNews.dismiss();
}

答案 2 :(得分:-1)

也许你应该创建一个简单的WebView对象:

    WebView webView = (WebView) getActivity().findViewById(R.id.webView);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl("yourURL");
    final ProgressDialog progressDialog = new ProgressDialog(getActivity());
    progressDialog.setMessage("Loading...");
    progressDialog.show();
    progressDialog.setCancelable(false);
    webView.setWebViewClient(new WebViewClient()
    {

        public void onPageFinished(WebView view, String url)
        {
            progressDialog.dismiss();
        }
    });

它对我有用。