2017-03-04 169 views
2

我的代碼顯示一個AlertDialog,它通過按下肯定按鈕退出活動。我希望它能夠退出後退按鈕。但是當我有.setCancelable(false)時,我的onBackPressed不起作用。我該如何解決這個問題,而不將其更改爲.setCancelable(true)onBackPressed不能使用AlertDialog

// show in dialog 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle("BROADCAST") 
      .setMessage(text) 
      .setCancelable(false) 
      .setPositiveButton("Dismiss", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          finish(); 
         } 
        }); 
    AlertDialog alert = builder.create(); 
    alert.show(); 
} 

@Override 
public void onBackPressed() { 
    finish(); 
} 
+0

所以要關閉上一回活動如果對話框打開,請按? –

+0

是的,這正是我想要的 – user352806

+0

完成取消關閉 –

回答

2

容易peeasy ..

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setTitle("BROADCAST") 
     .setMessage(text) 
     .setCancelable(true) 
     .setPositiveButton("Dismiss", 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         finish(); 
        } 
       }) 
     .setOnDismissListener(new DialogInterface.OnDismissListener() { 
           @Override 
           public void onDismiss(DialogInterface dialog) { 
            finish(); 
           } 
          }); 
AlertDialog alert = builder.create(); 
alert.setCanceledOnTouchOutside(false); 
alert.show(); 
+0

俗氣freezy ....讓我試試,這對我來說實際上是有意義的 – user352806

+0

爲什麼投票他想關閉活動與正面的按鈕或者按下,這個代碼做同樣的事情。只需設置'cancelable(true)'......它將在退出時收到...並且'setCanceledOnTouchOutside(false);' –

+0

我實際上正在嘗試做與你完全相同的事情,但我被錯誤轟炸了。我不明白爲什麼人們如此無知。這是正確的解決方案。 – user352806

2

你可以設置一個按鍵偵聽器

builder.setOnKeyListener(new DialogInterface.OnKeyListener() { 
       @Override 
       public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { 

        if(keyCode == KeyEvent.KEYCODE_BACK){ 
         dialog.dismiss(); // dismiss the dialog 
         YourActivity.this.finish(); // exits the activity 

        } 

        return true; 
       } 
      }) 
+0

這不是它是如何工作的,對話框可以覆蓋返回按鈕和onBackPressed – user352806

+0

這是什麼問題?我測試了它! –

+0

它可能會工作,但不是當AlertDialog顯示時 – user352806