2016-06-21 59 views
0

我做了一些需要幾秒鐘的數據庫保存。與此同時,我想顯示我的ProgressDialog以顯示該應用程序正在處理它。ProgressDialog不應該被取消

class CreateNewSaves extends AsyncTask<String, String, String> { 
     /** 
     * Before starting background thread Show Progress Dialog 
     * */ 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      pDialog = new ProgressDialog(activityContext); 
      pDialog.setMessage(activityContext.getString(R.string.upload_message)); 
      pDialog.setIndeterminate(false); 
      pDialog.show(); 
      pDialog.setCancelable(false); 
      pDialog.setCanceledOnTouchOutside(false); 
     } 
     /** 
     * Creating saves 
     * */ 
     protected String doInBackground(String... args) { 
      //Some work done 
      return null; 
     } 
     /** 
     * After completing background task Dismiss the progress dialog 
     * **/ 
     protected void onPostExecute(String file_url) { 
      // dismiss the dialog once done 
      pDialog.dismiss(); 
     } 

我不希望這ProgressDialog要取消,所以,我做

setCancelable(false); 
    setCanceledOnTouchOutside(false); 

但觸摸屏或後退按鈕時ProgressDialog仍然取消。 我不確定它是隱藏還是被解僱。

回答

0
 pDialog.show(); // this line should be at last. show will create your dialog, rest values will have no impact. 

     pDialog.setCancelable(false); 
     pDialog.setCanceledOnTouchOutside(false); 

replce與

  pDialog.setCancelable(false); 
      pDialog.setCanceledOnTouchOutside(false);  
      pDialog.show(); 
+0

這是我第一次嘗試的方式。然而,回到這個方式,然後做一個項目重建工作。有時必須重建項目以應用更改是否正常? (我猜這個項目重建有助於考慮setCancelable和setCanceledOnTouchOutside的變化) – Cedric

+0

如果android不需要重建,運行該項目。它應該反映在應用程序中。否則殺死應用程序再次運行,最後的選擇,將明確卸載並安裝應用程序。 – Sush

+0

有時會發生,當我停止調試並再次以調試模式啓動應用程序時,不會應用更改。我可以看到,當應用程序停在一條空線上的缺點處時 - 哪裏發生了變化。 – Cedric