AsyncTask
を使用して長さが確定したファイルをロードしようとしています。私のAsyncTask
は次のようになります:
_protected void onPreExecute() {
dialog = ProgressDialog.show(MyActivity.this, null, "Loading", false);
}
protected void onProgressUpdate(Integer... values) {
if (values.length == 2) {
dialog.setProgress(values[0]);
dialog.setMax(values[1]);
}
}
_
doInBackground()
実装では、ロードループ内でpublishProgress(bytesSoFar, maxBytes);
を呼び出し、onPostExecute()
ではdialog.dismiss()
を呼び出します。
ただし、ProgressDialog
に不確定なスピナー以外のものを表示させることはできません。ロードが発生したときの進行状況を示す水平方向の進行状況バーを見たいです。デバッグしたところ、onProgressUpdate()
が正常な値で呼び出され、ダイアログのメソッドが呼び出されていることがわかりました。
表示する前に、進行状況ダイアログにスタイルを追加します.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
このコードをonPreExecute()
で使用します。
ProgressDialog prog;
prog = new ProgressDialog(ctx);
prog.setTitle(title);
prog.setMessage(msg);
prog.setIndeterminate(false);
prog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
prog.show();