Android dialog設置不可取消後,返回鍵不可用(onKeyDown無效)

Android dialog設置不可取消後,返回鍵不可用(onKeyDown無效)

當activity中dialog設置爲不可取消時,點擊系統返回鍵是不會使dialog消失,也不會退出當前activityjava

dialog.setCancelable(false);
dialog.setCanceledOnTouchOutside(false);

可是,若是此時需求須要系統返回鍵發揮做用時,重寫activity中的onKeyDown是不起做用的web

//返回鍵事件會先被dialog攔截,onKeyDown方法並不會執行
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    return super.onKeyDown(keyCode, event);
}

正確✔方法應該使用dialog.setOnKeyListeneride

dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
    @Override
    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
        if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
             doSomething();
             return true;
         }
         return false;
     }
});