Подтвердить что ты не робот

AsyncTask с индикатором ProgressDialog и Progress Bar

Я пытаюсь использовать 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() получает вызовы со здравыми значениями и вызывает вызовы методов диалога.

4b9b3361

Ответ 1

Добавьте стиль в диалог выполнения, прежде чем вы покажете его .setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

Ответ 2

Используйте этот код в onPreExecute().

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