【发布时间】:2012-03-29 20:32:00
【问题描述】:
我正在为类似网站的博客开发 android web 应用程序。 为此,我正在显示 HTML 页面内容类别列表,单击时会显示与该类别相关的文章。
我从网站的 RSS 提要中获取这篇文章,它是 XML 格式的,并通过使用 JavaScript 来解析它以显示在 HTML 页面上。
解析 XML 的这个过程需要大量时间来加载页面。在此期间,我得到了空白屏幕。我已经实现了进度对话框,当页面第一次加载但 XML 被 JavaScript 解析时工作正常它没有出现。
这是我实现“进程”对话框的方式。 Activity.java:
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.main);
getWindow().setFeatureInt(Window.FEATURE_PROGRESS,
Window.PROGRESS_VISIBILITY_ON);
webview = (WebView) findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
webview.setBackgroundColor(0);
final ProgressDialog progressDialog = new ProgressDialog(activity);
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setMessage("Loading...please wait");
progressDialog.setCancelable(true);
webview.setWebViewClient(new WebViewClient()
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
return true;
}
});
webview.loadUrl("file:///android_asset/HomePage.html");
// WebChromeClient give progress etc info
webview.setWebChromeClient(new WebChromeClient()
{
public void onProgressChanged(WebView view, int progress)
{
progressDialog.show();
progressDialog.setProgress(0);
activity.setProgress(progress * 1000);
progressDialog.incrementProgressBy(progress);
if (progress == 100 && progressDialog.isShowing())
progressDialog.dismiss();
}
});
}
- 如何在 JavaScript 解析 XML 时显示进度对话框?
- 如果没有可用于同一事物的互联网连接,我还想显示一条错误消息,他们有什么办法吗?
- 我已将通话功能用作“电话:电话号码”,但在我添加 de public boolean shouldOverrideUrlLoading 它不起作用?我做错了什么?
【问题讨论】:
-
你研究过 AsyncTasks 吗?它有一个很好的进度更新器部分,可以帮助你developer.android.com/reference/android/os/AsyncTask.html 至于第二个问题,看看这篇文章stackoverflow.com/questions/4086159/…
标签: javascript android html android-webview progressdialog