具有ProgressDialog和ProgressBar的AsyncTask

20

我正在尝试使用 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()以合理的值被调用,并且对话框的方法正在被调用。


可能是Progressbar togther with asyncTask的重复问题。 - Siddharth Lele
2个回答

29
在显示进度对话框之前为其添加样式:.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

1
看起来我之前调用的是setStyle()而不是setProgressStyle()。此外,我认为带有布尔型不确定标志的ProgressDialog.show()方法会为您完成这项工作(否则有什么意义呢?)。我猜错了! - magneticMonster

9
在你的onPreExecute()中使用以下代码。
 ProgressDialog prog;
 prog = new ProgressDialog(ctx);
 prog.setTitle(title);
 prog.setMessage(msg);       
 prog.setIndeterminate(false);
 prog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
 prog.show();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接