次のことをしたいアプリがあります。
- ボタンとTextViewを使用してアクティビティを表示します。
- ユーザーがボタンをクリックすると、アプリに進行状況ダイアログが表示されます。
- アプリはWebサービスを呼び出してリストを取得します。
- [進行状況]ダイアログが非表示になり、[リストの選択]ダイアログボックスが表示されて、取得したリストが表示されます。
- ユーザーはリスト内のアイテムの1つを選択します。
- アイテムはTextViewに表示されます。
問題は、これが発生することです。
- ボタンとTextViewを使用してアクティビティを表示します。
- ユーザーがボタンをクリックすると、ボタンの状態が選択済みに変わります。
- 数秒後、[リストの選択]ダイアログボックスが表示され、取得したリストが表示されます。
- ユーザーはリスト内のアイテムの1つを選択します。
- 進行状況ダイアログが数秒間表示された後、非表示になります。
- アイテムはTextViewに表示されます。
WebサービスはAsyncTaskで実行され、進行状況ダイアログはonPreExecute()メソッドに表示され、onPostExecute()メソッドで閉じられます。
public class WebService extends AsyncTask<Void, Void, Boolean> {
public void onPreExecute() {
_progressDialog = ProgressDialog.show(_context, "", message);
}
protected Boolean doInBackground(Void... params) {
try {
// Execute web service
}
catch (Exception e) {
e.printStackTrace();
}
return true;
}
protected void onPostExecute(Boolean result) {
_progressDialog.hide();
}
}
Webサービスを実行してダイアログを表示するコード:
WebService ws= new WebService();
ws.execute();
// Web service saves retrieved list in local db
// Retrieve list from local db
AlertDialog.Builder db = new AlertDialog.Builder(context);
db.setTitle("Select an Item");
ArrayAdapter<String> listAdapter = new ArrayAdapter<String>(context,
android.R.layout.simple_selectable_list_item, list);
db.setAdapter(listAdapter, null);
db.show();
[リストの選択]ダイアログの前に進行状況ダイアログが表示されるように、コードに何かを追加する必要がありますか?
前もって感謝します。