web-dev-qa-db-ja.com

ProgressDialogとプログレスバーを備えたAsyncTask

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()が正常な値で呼び出され、ダイアログのメソッドが呼び出されていることがわかりました。

20
magneticMonster

表示する前に、進行状況ダイアログにスタイルを追加します.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

28

このコードをonPreExecute()で使用します。

 ProgressDialog prog;
 prog = new ProgressDialog(ctx);
 prog.setTitle(title);
 prog.setMessage(msg);       
 prog.setIndeterminate(false);
 prog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
 prog.show();
9
salman khalid