Android无法在EditText上捕获Enter键

时间:2017-02-13 18:29:17

标签: android

过去几个小时我一直在尝试捕获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);
}

1 个答案:

答案 0 :(得分:2)

在软键盘上没有用于处理键盘事件的API,仅用于硬件键盘。

根据Handling Keyboard Actions

  

注意:使用KeyEvent类和相关API处理键盘事件时,您应该期望此类键盘事件仅来自硬件键盘。您不应该依赖于接收软输入法(屏幕键盘)上的任何键的键事件。