2016年6月4日 星期六

在 DialogFragment 中顯示 ProgressDialog 的時機

class SyncAsset extends AsyncTask
class ReIndexDialog extends DialogFragment 

ReIndexDialog 是一個繼承 DialogFragment 物件
SyncAsset是一個繼承AsyncTask物件, 運用時常會以 progress dialog
來顯示程序處理的進度.

如果運用在 DialogFragment 內, 顯示一個 ProgressDialog
但如果在 onCreateDialog中show出 progressDialog, 則因rotate screen
會使onCreateDialog 再次執行,導致顯示一個空 progressDialog 的錯誤.

所以將prgDialog.show();
移到 SyncAsset的constructor中執行 

protected Dialog onCreateDialog(int id, Bundle args) {
   switch (id) {
   case 0:

//將以下這段移到 SyncAsset的constructor中執行 

      prgDialog = new ProgressDialog(this);
      prgDialog.setMessage("");
      // true 會顯示一個閃爍的進度條
      // prgDialog.setIndeterminate(false);
      // prgDialog.setMax(100);
      prgDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
      prgDialog.setCancelable(false);
      prgDialog.show();
      return prgDialog;
   default:
      return null;   
}

  © Blogger templates Psi by Ourblogtemplates.com 2008

Back to TOP