2016-06-21 58 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