带有 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的主要内容,如果未能解决你的问题,请参考以下文章

活动到片段方法调用带有进度条的线程

Android 中ProgressDialog进度条对话框的使用(使用子线程模拟更新进度)

创建全局ProgressDialog

带有进度条的圆周率计算

带有图像和圆形进度条的圆形按钮

带有进度条的按钮 android