按下后退按钮时,nexus手机会按哪个键



我想知道当用户在软键盘打开时按下nexus手机中的小倒置三角形时,会调用哪个KeyEvent动作。

在正常模式下,Nexus看起来是这样的,正常代码运行良好:Nexus无键盘

但当键盘弹出时,它看起来像这样,代码将不起作用:

Nexus带键盘

对于android API,最多5:

    @Override
public void onBackPressed() {
    // your code.
}

对于API 5之前的android,您必须使用此:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        // your code
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

请参阅如何处理活动中的后退按钮

编辑:

只有当键盘被隐藏时,这种方法才有效。。

根据这个答案:检测返回键按下-当键盘打开

要实现的最佳操作是dispatchKeyEventPreIme。一个例子是:

@Override
    public boolean dispatchKeyEventPreIme(KeyEvent event) {
        Log.d(TAG, "dispatchKeyEventPreIme(" + event + ")");
        if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
            KeyEvent.DispatcherState state = getKeyDispatcherState();
            if (state != null) {
                if (event.getAction() == KeyEvent.ACTION_DOWN
                        && event.getRepeatCount() == 0) {
                    state.startTracking(event, this);
                    return true;
                } else if (event.getAction() == KeyEvent.ACTION_UP
                        && !event.isCanceled() && state.isTracking(event)) {
                    mActivity.onBackPressed();
                    return true;
                }
            }
        }
        return super.dispatchKeyEventPreIme(event);
    }

mActivity是您的活动类(this)

最新更新