Android 按下后退按钮时,nexus手机会触发哪个按键动作?
我想知道当用户在打开软键盘时按下nexus phone中的小倒三角形时,会调用哪个KeyEvent动作 在正常模式下,Nexus如下所示,正常代码工作正常: 但当键盘弹出时,它看起来像这样,代码无法工作:Android 按下后退按钮时,nexus手机会触发哪个按键动作?,android,android-softkeyboard,back-button,google-nexus,Android,Android Softkeyboard,Back Button,Google Nexus,我想知道当用户在打开软键盘时按下nexus phone中的小倒三角形时,会调用哪个KeyEvent动作 在正常模式下,Nexus如下所示,正常代码工作正常: 但当键盘弹出时,它看起来像这样,代码无法工作: 对于最多5个android API: @Override public void onBackPressed() { // your code. } 对于API 5之前的android,您必须使用: @Override public boolean onKeyDown(in
对于最多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);
}
请参阅
编辑:
仅当键盘处于隐藏状态时,此方法才有效
根据这个答案:
要实现的最佳操作是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是您的活动类(此)。对于最多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);
}
请参阅
编辑:
仅当键盘处于隐藏状态时,此方法才有效
根据这个答案:
要实现的最佳操作是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是您的活动类(此)。@Override public void onBackPressed(){}@JCDecary我使用了onKeyDown(),当键盘隐藏且三角形指向左侧时,我将返回KeyEvent.KEYCODE\u,但在键盘存在的情况下,我不知道它触发了什么!也许这会对你有所帮助:。我不明白你在说什么want@Overridepublic void onBackPressed(){}@JCDecary我使用了onKeyDown(),当键盘被隐藏并且三角形指向左侧时,我得到KeyEvent.KEYCODE_返回,但在键盘存在的情况下,我不知道它触发了什么!也许这会对你们有所帮助:。我不明白你们想要什么。我说,在我使用的模拟器中,当键盘存在时,这段代码不会工作!当键盘打开或操作未启动时,调试器会输入该代码?我添加了2张照片并更新了问题,请看一看。这样我需要覆盖我的根布局视图,我不希望这样做。正如我所说,在emulator中,当键盘存在时,我使用该代码将无法工作!当键盘打开或操作未启动时,调试器输入该代码?我添加了2张照片并更新了问题,请看。这样我需要覆盖我的根布局视图,我不希望这样做。