我有一个AsyncTask来处理一个相当长时间运行的更新过程,我想要一个进度对话框,按顺序显示:
我在确定(进度条显示)和不确定(没有进度条)之间切换进度对话框时遇到问题。
我的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()
似乎会导致我的应用崩溃。
有没有简单的方法可以在确定模式和不确定模式之间切换进度对话框?
答案 0 :(得分:3)
关闭一个进度对话框并打开另一个进度对话框可能是一个好主意。
答案 1 :(得分:-1)
您可以将代码更改为:
endY