进度对话框未在webview中显示

时间:2016-06-24 13:13:44

标签: android webview progressdialog

我在我的Android应用程序中有一个 webview ,它从本地文件夹中呈现html页面,现在我想在从一个html页面导航到另一个html页面时显示进度对话框但是我正在使用的进度对话框没有出现。这是我的代码段

  @JavascriptInterface
    public void save(String respString, boolean ifEndNode) throws JSONException {
        ProgressDialog progDialog = null;
        try {

            if(ifEndNode){
            //start loader
                progDialog = new ProgressDialog(webView.getContext());
                progDialog.setMessage("Saving survey, Please DON'T close the Application!! ");
                progDialog.setCanceledOnTouchOutside(false);
                progDialog.setCancelable(false);
                progDialog.show();
        }

       //some code here
      //...
      }
       catch (Exception e)
           {
            Logger.e(context,"exception", "jsonObjectexception");
           }
        finally {
            if(progDialog != null && progDialog.isShowing())
                progDialog.dismiss();
        }

任何人都可以提出问题所在吗?

1 个答案:

答案 0 :(得分:2)

您可以WebView使用ProgressDialog这种方式。这很好,也很简单。

 private WebView webView;
 ProgressDialog prDialog;

     @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.page_news);
            setSupportActionBar((Toolbar) findViewById(R.id.toolbar));

            webView = (WebView) findViewById(R.id.wv_news);
            webView.setWebViewClient(new MyWebViewClient());

            String url = "http://google.com/";
            webView.getSettings().setJavaScriptEnabled(true);
            webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
            webView.loadUrl(url);


        }

 private class MyWebViewClient extends WebViewClient {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            prDialog = new ProgressDialog(NewsActivity.this);
            prDialog.setMessage("Please wait ...");
            prDialog.show();
        }

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