需在用戶按返回鍵取消 AlertDialog 時執行邏輯,設置 setOnCancelListener 即可。
AlertDialog alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setTitle("Caution");
alertDialog.setMessage("Alert");
alertDialog.setButton("OK", (dialog, which) -> finish());
// 關鍵:設置取消監聽
alertDialog.setOnCancelListener(dialog -> {
// 用戶按返回鍵或點擊外部取消時執行
Log.d("Dialog", "User cancelled");
// 執行其他邏輯,如記錄統計、恢復狀態等
});
alertDialog.show();
| 監聽器 | 觸發時機 |
|---|---|
OnCancelListener | 僅按返回鍵、點擊外部、調用 cancel() 時 |
OnDismissListener | 任何情況消失(含按鈕點擊、dismiss()、取消) |
若需區分「用戶主動取消」與「正常關閉」,用 OnCancelListener;無論何種關閉都要執行,用 OnDismissListener。
setCanceledOnTouchOutside(false) 可禁止點擊外部取消。一行代碼捕獲返回鍵取消事件,邏輯處理更精準。