一、需求
在Android開發(fā)過程中,彈出dialog后無法捕捉back鍵,點擊back按鍵無響應(yīng)。
二、解決方案
原因:彈出dialog后,activity失去焦點,dialog獲得當(dāng)前焦點。
解決辦法:在dialog中可以通過調(diào)用setOnKeyListener()方法來為dialog增加按鍵事件的監(jiān)聽。
private void createDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(getString(R.string.acq_select_hint)); builder.setPositiveButton(getString(R.string.dialog_cancel), (dialog, which) -> onCancelClicked(dialog)); builder.setCancelable(false); builder.setOnKeyListener((dialog, keyCode, event) -> { if (keyCode == KeyEvent.KEYCODE_BACK) { onCancelClicked(dialog); } return false; }); builder.create().show(); } private void onCancelClicked(DialogInterface dialog) { setResult(100); finish(); dialog.dismiss(); }