需求:彈出Dialog爲不可關閉,點擊返回按鈕時退出頁面。
推薦一個好用的彈出框:kongzue的github地址,可滿足大部分需求。
實現監聽返回鍵代碼:
AlertDialog alertDialog;
//省略其他代碼
alertDialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
// 根據需求實現代碼
finish();
}
return false;
}
});
其中,返回鍵在系統分發時,發送Message去調用KeyEvent.changeTimeRepeat。長按時會發多次KeyEvent.ACTION_DOWN。
第一次event.getRepeatCount()爲返回0,之後遞增。避免長按多次調用onKeyDown添加repeatCount == 0判斷。