如何在加载所有网络数据之前等待显示webView? 我创建了这个asynktask草图:
@Override
protected Void doInBackground(String... params) {
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient());
webView.getSettings().setJavaScriptEnabled(true);
String url = params[0];
webView.loadUrl(url);
return null;
}
@Override
protected void onPreExecute() {
//progress = ProgressDialog.show(MainActivity.this,"wait","downloading URL");
progressBar.setVisibility(View.VISIBLE);
}
@Override
protected void onPostExecute(Void result) {
webView.setVisibility(View.VISIBLE);
progressBar.setVisibility(View.GONE);
}
}
它可以工作但是这个代码的结尾,在onPostExecute之后我仍然看到webview加载的空白页面
答案 0 :(得分:1)
loadUrl
已经异步执行所有操作,因此立即调用onPostExecute。
如果要显示加载指示器,则需要使用:
mWebView.setWebViewClient(new WebViewClient() {
public void onPageStarted (WebView view, String url, Bitmap favicon) {
view.setVisibility(View.GONE);
progressBar.setVisibility(View.VISIBLE);
}
public void onPageFinished(WebView view, String url) {
view.setVisibility(View.VISIBLE);
progressBar.setVisibility(View.GONE);
}
});
webView.loadUrl(url);
当然会删除AsyncTask。
更多:here