我想知道当软键盘打开时,当用户按下 nexus 手机中的小倒三角形时,会调用哪个 KeyEvent 操作。
在正常模式下,Nexus 看起来像这样,正常代码工作正常: 没有键盘的 Nexus
但是当键盘弹出时它看起来像这样并且代码将不起作用:
我想知道当软键盘打开时,当用户按下 nexus 手机中的小倒三角形时,会调用哪个 KeyEvent 操作。
在正常模式下,Nexus 看起来像这样,正常代码工作正常: 没有键盘的 Nexus
但是当键盘弹出时它看起来像这样并且代码将不起作用:
对于最多 5 个的 android API:
@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);
}
请参阅如何处理活动中的后退按钮
编辑:
此方法仅在键盘被隐藏时才有效..
根据这个答案:Detect back key press - When keyboard is open
要实现的最佳操作是 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)在哪里。