当 webView 在 Android 完成时更新父视图

Update the parent view when webView finishes on Android

我有一个 web 视图需要一些时间来加载,所以我有一个进度指示器应该显示,直到 web 视图准备就绪。但是,最好的方法是什么?我有:

        webView.setWebViewClient(new WebViewClient() {
            public void onPageFinished(WebView view, String url) {
                //mListener.finishedLoadingHtml();
                ProgressBar bar = (ProgressBar) view.findViewById(R.id.article_content_progressIndicator);
                bar.setVisibility(View.GONE);
            }
        });

但这不起作用,因为 bar = null。有没有一种简单的方法可以从回调中访问 progressBar ?我仍在为 Android 视图层次结构等问题苦苦挣扎

这可能会有所帮助。

webview.setWebViewClient(new WebViewClient() {
        public void onProgressChanged(WebView view, int progress)   
        {
            //Make the bar disappear after URL is loaded, and changes string to Loading...
            setTitle("Loading...");
            setProgress(progress * 100); //Make the bar disappear after URL is loaded

            // Return the app name after finish loading
            if(progress == 100)
               setTitle(R.string.app_name);
            }
        });

我通过 javaScript
开始时,我在 webView 上显示 progressBar,当页面完全加载时,我使用 java 脚本通知 java 应该通过这种方式消失 progressBar

myWebView.addJavascriptInterface(new JavaScriptInterface(context),
            "jsInterface");

ProgressBar bar = (ProgressBar) view.findViewById(R.id.article_content_progressIndicator);

public class JavaScriptInterface {
    Context mContext;

    /** Instantiate the interface and set the context */
    JavaScriptInterface(Context c) {
        mContext = c;
    }

    @JavascriptInterface
    public void pageLoaded() {
         if(bar!=null)
             bar.setVisibility(View.GONE);
    }

}  

并在 html 页面内通过 java 脚本调用方法如下:

function onPageLoad(){
    jsInterface.pageLoaded();
}