10

かなり長時間実行される更新プロセスを処理する AsyncTask があり、次の順序で表示される進行状況ダイアログが必要です。

  1. 「アップデートを開始しています」(一瞬)
  2. 「アップデートをダウンロード中」(プログレスバーなし — ダウンロードする前にアップデートのサイズがわからない)
  3. 「アップデートデータ保存中」(0~100%のプログレスバーあり)
  4. 「アップデート画像を保存中」(0~100%のプログレスバー付き)
  5. 「アップデートが完了しました」(ダイアログが消えるまでの短い時間)

進行状況ダイアログを確定 (進行状況バーが表示される) と不確定 (進行状況バーなし) の間で切り替えるのに問題があります。

私の 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%" が表示されることです。

次に、数値を非表示にするために and を使用してみsetProgressNumberFormat()ましsetProgressPercentFormat()たが、これらはいずれも 3.0 未満の Android ではサポートされていません。

次にsetProgressStyle()、STYLE_SPINNER と STYLE_HORIZONTAL を切り替えるために使用しようとしました —setProgressStyle()私の呼び出しでonProgressUpdate()アプリがクラッシュするようです。

進行状況ダイアログを確定モードと不確定モードの間で切り替える簡単な方法はありますか?

4

2 に答える 2

3

1 つの進行状況ダイアログを閉じて、別のスタイルの別のダイアログを開くことをお勧めします。

于 2012-11-08T04:38:16.843 に答える