アクティビティ (Dashboard.java) で 3 つのフラグメントを表示するために View Pager を使用しています。前のアクティビティ (Login.java) のボタンをクリックした後にアクティビティが読み込まれ、2 つのフラグメントがサーバーからフェッチされたリストビューを表示しています。
問題は、サーバーからデータを取得してリストビューとして表示するのに少なくとも 3 ~ 7 秒かかることです。だから私は ProgressDialog を表示して Loading ステータスを表示したいと思います。
AsyncTask を試して、サーバーからデータをフラグメントにロードしました。それは機能しますが、ProgressDialog は数時間後、リストにデータが入力される前の 1 秒間だけ表示されます。また、ボタンをクリックしてメイン アクティビティ (Dashboard.java) をロードする際にも遅延が発生します。
したがって、2 つの問題があります 。 1. 進行状況ダイアログが非常に遅く表示される 2. 前のアクティビティ (Login.java) から MainActivity (Dashboard.java) への遅延があります (黒い画面が表示されることがあります)。
これはフラグメント内の私の 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 を使用する必要がありますか? 私を正しい道へと導いてください。
編集 実際には、進行状況ダイアログでフラグメントをロードする最良の方法は何ですか? (フラグメントは、サーバーから入力されたリストビューです)