ProgressDialog没有被WebView中的webChromeClient拒绝
问题描述:
我有以下代码 ,但即使进度为100%,进度对话框也不会被解除。ProgressDialog没有被WebView中的webChromeClient拒绝
try{
webView = (WebView) findViewById(R.id.browserwebview);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress)
{
catalogProgressDialog = new ProgressDialog(activity);
catalogProgressDialog.setCancelable(true);
catalogProgressDialog.show();
catalogProgressDialog.setProgress(0);
activity.setProgress(progress * 1000);
catalogProgressDialog.incrementProgressBy(progress);
if(progress == 100 && catalogProgressDialog.isShowing()){
catalogProgressDialog.dismiss();
}
}
});
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
{
Toast.makeText(activity, "Oh no!"+ description, Toast.LENGTH_SHORT).show();
}
@Override
public void onPageFinished(WebView view, String url) {
view.scrollBy(0, view.getContentHeight());
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
return true;
}
});
webView.loadUrl("http://www.google.com");
webView.pageDown(true);
webView.setHorizontalScrollBarEnabled(true);
webView.setVerticalScrollBarEnabled(true);
}
catch (Exception e) {
e.printStackTrace();
}
它甚至没有显示完成进度。 谢谢。
答
你确定你在你的主UI线程?你试过包装你的
catalogProgressDialog.dismiss();
在一个处理程序?
handler.post(new Runnable() {
@Override
public void run() {
catalogProgressDialog.dismiss();
}
});
谢谢,我已经在帖子现在完全更新的代码,我想你的代码获得NullPointerException异常的'handler.post(新的Runnable(){',任何建议。 – Mukunda 2012-02-09 08:22:48
是的,在你的代码中定义一个处理程序,请尝试在onCreate区域执行此操作:handler = new Handler();并确保将处理程序定义为类变量。 – runor49 2012-02-10 17:43:14