2011-11-30 73 views
0

我有一個進度對話框我試圖顯示當用戶單擊按鈕啓動新的活動。微調器應顯示在當前頁面上,直到出現其他活動。 (該活動有時可能需要4-5秒才能啓動,如果沒有微調器,它只會顯示一個按下的按鈕,看起來像是凍結的)顯示進度對話框,直到新的活動加載

這是我的,它只在工作,如果我刪除hideProgressDialog();,但然後微調顯然,當我回到上一個活動時,它仍然會在那裏。

我在做什麼錯?

進度對話框:

public void showProgressDialog(Context context) { 
    if(this.progressDialog != null) { 
     this.progressDialog.dismiss(); 
     this.progressDialog = null; 
    } 
    this.progressDialog = ProgressDialog.show(context, "", "Chargement en cours, veuillez patienter"); 
}  

public void hideProgressDialog() { 
    if(this.progressDialog != null) { 
     this.progressDialog.dismiss(); 
     this.progressDialog = null; 
    } 
} 

功能:一個按鈕,點擊這個地方調用函數來顯示微調的

public void startActivity(Context context, Class<? extends Activity> activityClass) { 
    try { 
     showProgressDialog(context); 
      Intent intent = new Intent(this, activityClass); 
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);   
      startActivity(intent);  
      hideProgressDialog(); 
    } 
    catch(Throwable e) { 
     e.printStackTrace(); 
    } 
} 

例子:

@Override 
public void onClick(View view) { 
    if(view.getId() == R.id.changeBannerButton) { 
     getBaseApplication().startActivity(this, BannerListActivity.class); 
    }... 
+0

所以...爲什麼活動採取這樣很長時間才能啓動? – dmon

回答

5

onResume()方法中調用hideProgressDialog()。這樣,如果用戶按下後退按鈕,將調用onResume()方法,並立即隱藏進度對話框。

+0

好主意,它工作。謝謝。 – JFFF

2

那麼首先你應該在FragmentManager中使用新的DialogFragment類。因爲ShowDialog的()從API級別8

棄用接下來,你應該使用的ShowDialog並添加和刪除對話框removedialog

而且您應該使用onCreateDialog來處理對話框和操作。就像開始一個新的線程來運行,當你顯示progressdialog的時候做這個工作。