在 ListActivity 中覆寫 onKeyDown,攔截 KEYCODE_BACK 顯示確認對話框,使用者確認後呼叫 finish()。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
new AlertDialog.Builder(this)
.setTitle("提示")
.setMessage("確定要退出?")
.setPositiveButton("是", (dialog, which) -> finish())
.setNegativeButton("否", null)
.show();
return true; // 事件已處理
}
return super.onKeyDown(keyCode, event);
}
true 表示事件已消費,不再傳遞給父類(預設會 finish())。onBackPressed()(但無法攔截長按等細節)。AlertDialog.Builder 鏈式調用簡潔明瞭。