0

我有一个 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); 
        }
    });
4

3 回答 3

9

尝试这个

您使用了错误的 webClient

wv.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int newProgress) {
                progressBar.setProgress(newProgress);
            }
        });
于 2013-09-02T07:33:37.477 回答
2

WebView 客户端没有任何名为 onProgressChanged 的​​方法。你可以在这里查看

将您的代码移动到支持此方法的 webchrome 客户端。在这里检查

于 2013-09-02T07:36:38.670 回答
-1

使用 webChromeClient 而不是 webViewClient

于 2019-04-07T07:40:50.137 回答