2014-03-06 35 views
3

我有一個活動,它有一個setCancelable(false)進度對話框。關閉活動和背部按壓對話框

我想完成活動以及解除backPressed()上的progressdialog box

我已經實施onBackPressed()如下,但它不起作用。

@Override 
public void onBackPressed() { 
    if(pDialog.isShowing()){ 
     pDialog.dismiss(); 
    } 
    this.finish(); 
    super.onBackPressed(); 
} 

進度對話框代碼

 pDialog = new ProgressDialog(MainActivity.this); 
     pDialog.setTitle("Connecting to Server"); 
     pDialog.setMessage("Updating Assignee Detail. Please wait..."); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(false); 
     pDialog.show(); 
+1

你爲什麼不能在onBackPressed方法使pDialog.setCanceleable(真)。 'finish'和'onBackPressed'也是一樣的。刪除this.finish(); –

+1

如果更改爲setCancelable(true),會發生什麼情況?你的代碼工作嗎? – Melquiades

+0

發佈您的progressdialog代碼。 –

回答

2

pDialog.setCancelable(true); 

而且你的代碼的其餘部分都很好。

2

按回

@Override 
protected void onStop() { 
    // TODO Auto-generated method stub 
    super.onStop(); 
    if(progressDialog.isShowing()) { 
     progressDialog.dismiss(); 
    } 
} 

編碼快樂就關閉該對話框中OnStop()休息Activityfinish()自動!!

+0

非常有幫助... – Ravi

1

使用此方法,無需調用完成的活動:

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      if(null != pDialog) 
pDialog.dismiss(); 
     } 
     return super.onKeyDown(keyCode, event); 
    } 
1

您可以在2個以下步驟實現它,

第1步 變化

pDialog.setCancelable(false)

pDialog.setCancelable(true)

因爲如果Dialog設置爲false,則不能取消Dialog

步驟2

添加一個監聽器,你Dialog這樣,當取消像下面將要監聽,在對話框

pDialog.setOnCancelListener(new DialogInterface.OnCancelListener() { 
      @Override 
      public void onCancel(DialogInterface dialog) { 
       // if from activity 
       finish(); 

      } 

     }); 
0

這一翻譯完成活動辭退:

pDialog .setOnDismissListener(new OnDismissListener() { 

      @Override 
      public void onDismiss(DialogInterface dialog) { 
       finish(); 
      } 
     }); 
0

這是進度對話框的一個小例子,關閉它並且執行...

選項1

創建進度對話框

ProgressDialog dialog = new ProgressDialog(this); //create progress dialog 
    dialog.setMessage("¡wait it, please...!"); //body text... 
    dialog.setCancelable(true); //if it will be cancelable 
    //this is the listener cancelable 
    dialog.setOnCancelListener(new DialogInterface.OnCancelListener() { 
     @Override 
     public void onCancel(DialogInterface dialogInterface) { 
      finish(); 
     } 
    }); 
    dialog.show(); //show it... 

完成它在某些威脅或任何你想要...

dialog.dismiss(); 

backpressed

@Override 
public void onBackPressed() { 
    if(dialog.isShowing()){ 
     dialog.cancel(); 
    } 
    finish(); 
} 

選項2

創建一個全局變量

Boolean validation=false; 

創建進度對話框

ProgressDialog dialog = new ProgressDialog(this); //create progress dialog 
    dialog.setMessage("¡wait it, please...!"); //body text... 
    dialog.setCancelable(false); //if it will be cancelable 
    //this is the listener dismiss 
    dialog.setOnDismissListener(new DialogInterface.OnDismissListener() { 
      @Override 
      public void onDismiss(DialogInterface dialogInterface) { 
       if(validation){ 
        dialogInterface.dismiss(); 
       }else{ 
        finish(); 
       } 
      } 
     }); 
    dialog.show(); //show it... 

撈起來

//if finish process 
validation=true; 
dialog.dismiss(); 

//if finish with backpress 
validation=false; 
dialog.dismiss(); 

上backpressed

@Override 
public void onBackPressed() { 
    if(dialog.isShowing()){ 
     validation=false; 
     dialog.dismiss(); 
    } 
    finish(); 
}