【发布时间】:2012-08-28 10:38:07
【问题描述】:
我正在使用 View Pager 在活动中显示 3 个片段(Dashboard.java)。单击上一个活动(Login.java)上的按钮后加载活动,其中两个片段显示从服务器获取的列表视图。
问题是从服务器获取数据并填充为列表视图至少需要 3-7 秒。所以我想显示一个 ProgressDialog 来显示一个 Loading 状态。
我尝试过 AsyncTask 从片段中的服务器加载数据。它有效,但仅在几次后才显示 ProgressDialog,仅在填充列表之前一秒钟。单击 BUTTON 加载主 Activity (Dashboard.java) 也有延迟
所以有两个问题: 1. 进度对话框出现得很晚 2.上一个activity(Login.java)到MainActivity(Dashboard.java)有延迟(有时会黑屏)
这是我在 Fragment 中的 AsyncTask
new AsyncTask<Void, Void, Void>() {
@Override
protected void onPostExecute(Void result) {
pd.dismiss();
super.onPostExecute(result);
}
@Override
protected void onPreExecute() {
pd.show();
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
NodeList nl = doc.getElementsByTagName(KEY_ITEM);
// looping through all item nodes <item>
for (int i = 0; i < nl.getLength(); i++) {
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
// adding each child node to HashMap key => value
map.put(KEY_ID, parser.getValue(e, KEY_ID)); // id not using any
// where
map.put(KEY_NAME, parser.getValue(e, KEY_NAME));
// adding HashList to ArrayList
menuItems.add(map);
}
return null;
}
}.execute();
实际上我应该在 MainActivity (Dashboard.java) 还是 Fragment.java 上使用 ProgressDialog? 请指引我正确的道路。
编辑 实际上,使用进度对话框加载片段的最佳方式是什么? (片段是从服务器填充的列表视图)
【问题讨论】:
标签: android android-fragments android-viewpager progressdialog