如何在确定和不确定之间切换进度对话框?

时间:2012-11-08 04:35:11

标签: android

我有一个AsyncTask来处理一个相当长时间运行的更新过程,我想要一个进度对话框,按顺序显示:

  1. “开始更新”(暂时更新)
  2. “正在下载更新”(没有进度条 - 我不知道在下载之前更新会有多大)
  3. “保存更新数据”(进度条为0-100%)
  4. “保存更新图片”(进度条为0-100%)
  5. “更新完成”(在对话框消失前短暂停留一段时间)
  6. 我在确定(进度条显示)和不确定(没有进度条)之间切换进度对话框时遇到问题。

    我的AsyncTask中的代码如下:

    private final ProgressDialog progressDialog;
    
    public SynchronizeTask(Activity activity)
    {
        progressDialog = new ProgressDialog(activity);
        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    }
    
    protected void onPreExecute() {
        progressDialog.setMessage("Starting update...");
        progressDialog.setCancelable(false);
        progressDialog.show();
    }
    
    ...lots of code here...
    
    // all of these are set from doInBackground()
    private String progressMsg;
    private int progressTotal;
    private int progressProgress;
    
    protected void onProgressUpdate(Void... values) {
        progressDialog.setMessage(progressMsg);
        if (progressTotal > 0) {
            progressDialog.setIndeterminate(false);
            progressDialog.setMax(progressTotal);
            progressDialog.setProgress(progressProgress);
        } else {
            progressDialog.setIndeterminate(true);
            progressDialog.setMax(0);
            progressDialog.setProgress(0);
        }
    }
    

    我尝试用setIndeterminate()切换确定 - 这里的问题是进度对话框在对话框底部显示“NaN”和“0%”,即使在不确定模式下没有“条形”。< / p>

    然后我尝试使用setProgressNumberFormat()setProgressPercentFormat()来隐藏这些数字 - 但Android 3.0以下都不支持这些数字。

    然后我尝试使用setProgressStyle()在STYLE_SPINNER和STYLE_HORIZONTAL之间切换 - 在setProgressStyle()中调用onProgressUpdate()似乎会导致我的应用崩溃。

    有没有简单的方法可以在确定模式和不确定模式之间切换进度对话框?

2 个答案:

答案 0 :(得分:3)

关闭一个进度对话框并打开另一个进度对话框可能是一个好主意。

答案 1 :(得分:-1)

您可以将代码更改为:

endY
相关问题