带有 ProgressDialog 和进度条的 AsyncTask
Posted
技术标签:
【中文标题】带有 ProgressDialog 和进度条的 AsyncTask【英文标题】:AsyncTask with a ProgressDialog and Progress Bar 【发布时间】:2011-10-12 19:14:01 【问题描述】:我正在尝试使用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的可能重复 【参考方案1】:在显示之前将样式添加到进度对话框.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
【讨论】:
看起来我之前调用的是 setStyle() 而不是 setProgressStyle()。另外,我的印象是带有布尔不确定标志的 ProgressDialog.show() 方法会为您工作(否则有什么意义?)。猜我错了!【参考方案2】:在您的onPreExecute()
中使用此代码。
ProgressDialog prog;
prog = new ProgressDialog(ctx);
prog.setTitle(title);
prog.setMessage(msg);
prog.setIndeterminate(false);
prog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
prog.show();
【讨论】:
以上是关于带有 ProgressDialog 和进度条的 AsyncTask的主要内容,如果未能解决你的问题,请参考以下文章