【问题标题】:AsyncTask with a ProgressDialog and Progress Bar带有 ProgressDialog 和进度条的 AsyncTask
【发布时间】: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() 被调用时使用正常的值,并且对话框的方法正在被调用。

【问题讨论】:

标签: android android-asynctask progressdialog


【解决方案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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    相关资源
    最近更新 更多