过去几个小时我一直在尝试捕获Enter键,但我没有在Listener中接听电话。我正在尝试提供“按Enter键发送”。但我总是注册OnKeyListener。一些键被随机调用。
它不重复,因为所有答案都提供了相同的细节,这是一个标准代码。我正在使用nexus 6P
我的代码:
public void onCreate(){
//set press enter to save state
anEditText.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View view, int keyCode, KeyEvent event) {
if( keyCode ==
EditorInfo.IME_ACTION_SEND || event.getKeyCode() == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN){
if (new SharedPrefsManager(mContext).getBoolean(StringConstants.KEY_PRESS_ENTER_TO_SAVE, false)) {
Toast.makeText(mContext, "Enter pressed, to save", Toast.LENGTH_SHORT).show();
}
return true;
}
return false;
}
});
}
@OnCheckedChanged(R.id.check_enter_to_send)
public void enterToSendChecBoxClicked(CompoundButton buttonView, boolean isChecked){
// 1. set the preference
new SharedPrefsManager(mContext).putBoolean(StringConstants.KEY_PRESS_ENTER_TO_SAVE, isChecked);
}
答案 0 :(得分:2)
在软键盘上没有用于处理键盘事件的API,仅用于硬件键盘。
注意:使用KeyEvent类和相关API处理键盘事件时,您应该期望此类键盘事件仅来自硬件键盘。您不应该依赖于接收软输入法(屏幕键盘)上的任何键的键事件。