我有一個的AsyncTask來處理一個相當長的運行更新的過程,我希望有一個進度對話框顯示,爲了:如何在確定和不確定之間切換進度對話框?
- 「開始更新」(短短的一秒鐘)
- 「下載更新」 (沒有進度條—我不知道下載之前更新有多大)
- 「保存更新數據」(帶有0-100%進度條)
- 「保存更新圖像」(帶有0-100%進度條)
- 「更新完成」(for a br即第二個對話框消失之前)
我有問題切換進度對話框確定(進度條顯示)和不確定(無進度條)之間的進度對話框。
在我的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()
—這裏的問題是,進度對話框顯示「南」和「0%」,在對話框的底部,即使在不確定模式下沒有「酒吧」。
然後,我嘗試使用setProgressNumberFormat()
和setProgressPercentFormat()
只是爲了隱藏號碼—但這些都不支持Android 3.0以下。
然後我試着用setProgressStyle()
到STYLE_SPINNER和STYLE_HORIZONTAL —調用我onProgressUpdate()
似乎導致我的應用程序崩潰setProgressStyle()
之間切換。
是否有任何簡單的方法來切換確定和不確定模式之間的進度對話框?
OK,這似乎工作 - 我認爲我將無法重現「在飛行中」一個ProgressDialog,但它似乎工作正常,因爲onProgressUpdate()在UI線程上運行。我爲更新的每個新「階段」設置了一個布爾標誌「newDialog」,並且如果我在onProgressUpdate()中看到該標誌設置爲I:關閉舊對話框;用我選擇的風格(微調或水平)創建一個新的對話框;顯示新的對話框;將newDialog設置回false。謝謝你的提示。 – George