WebView onProgressChanged()未调用

时间:2013-09-02 07:24:49

标签: android webview android-progressbar webviewclient

我有一个WebView,它可以很好地加载URL。好。我已经获得了一个WebViewClient并扩展了onProgressChanged,但据我所知,它没有被调用。有什么想法吗?

 wv.setWebViewClient(new WebViewClient(){

        public void onProgressChanged(final WebView view, final int newProgress) {
            Log.e("APPNAME", String.valueOf(newProgress));
            if (newProgress < 100 && progressBar.getVisibility() == ProgressBar.GONE){
                progressBar.setVisibility(ProgressBar.VISIBLE);
            }
            progressBar.setProgress(newProgress);
            progressTxt.setText(newProgress);
            if (newProgress == 100){
                progressBar.setVisibility(ProgressBar.GONE);
            }
        }

        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl){
             InputStream is = null;
             byte[] buffer = null;
                try {
                    is = getAssets().open("error.html");
                    int size = 0;
                    size = is.available();
                    buffer = new byte[size];
                    is.read(buffer);
                    is.close();
                }
                catch(Exception e){

                }
                String str = new String(buffer);
                str = str.replace("%@", description);

                view.loadDataWithBaseURL("file:///android_asset/", str, "text/html", "utf-8", null); 
        }
    });

3 个答案:

答案 0 :(得分:9)

试试这个

您使用的是错误的webClient

wv.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int newProgress) {
                progressBar.setProgress(newProgress);
            }
        });

答案 1 :(得分:1)

WebView客户端没有任何名为onProgressChanged的方法。您可以查看here

将您的代码移动到支持此方法的webchrome客户端。查看here

答案 2 :(得分:-1)

使用webChromeClient代替webViewClient