Ответ 1
Добавьте стиль в диалог выполнения, прежде чем вы покажете его .setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
Я пытаюсь использовать 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();