EditText上的返回键的Android侦听器不适用于每个设备

时间:2016-12-21 10:39:46

标签: android android-edittext keyevent

我想用返回键的监听器初始化一个compose字段。在文档中,如果由于按下回车键而被调用,actionIdEditorInfo.IME_NULLactionId。我将KeyEvent与该值进行了比较。它还说如果由返回键触发,我们会收到KeyEvent.ACTION_UP个对象,所以我测试它为onEditorAction(),这是与释放键相对应的值。 当我运行代码时,它适用于运行KitKat的设备,但在另一个运行Lollilop的设备中,它不会消耗返回键,也不会调用public void setupChat() { Log.i(LOG_TAG, "setupChat()"); oETConversation.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { Log.i(LOG_TAG, "onEditorAction()"); if (actionId == EditorInfo.IME_NULL && event.getAction() == KeyEvent.ACTION_UP) { String s = v.getText().toString(); sendMessage(s); } return true; } }); } public void sendMessage(String s) { Log.i(LOG_TAG, "sendMessage()"); Log.i(LOG_TAG, s); } 。它只是插入一个新行。这是代码:

  Database db = client.database("dbTempName", true);

  // Used google.gson.JsonObject instead of org.json.JSONObject. 
  com.google.gson.JsonParser parser = new com.google.gson.JsonParser();
  com.google.gson.JsonObject jsonObject = parser.parse("{\"hello\": \"data\"}").getAsJsonObject();

  db.save(jsonObject);

1 个答案:

答案 0 :(得分:2)

试试这个,我就是这样做的,而不是keyEvent

oETConversation.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_ENTER) {
                String s = oETConversation.getText().toString();
                sendMessage(s);
                return true;
            }
            return false;
        }
    });

希望这会有所帮助;)

<强>更新

在xml中确保您的editText包含android:singleLine="true"字段。