【问题标题】:Get keyCode 0 instead of 66 when Enter is pressed on my computer keyboard在我的电脑键盘上按 Enter 时获取 keyCode 0 而不是 66
【发布时间】:2012-03-08 19:20:44
【问题描述】:

我有一个带有 EditText 的简单活动。当用户在 EditText 中输入名称然后按 Enter 键时,我想保存表单数据。

除了一件事之外,一切都有效。 keyCode 变量是 0 而不是 66 (KeyEvent.KEYCODE_ENTER)。

有人知道问题出在哪里吗?

我的布局 xml:

<EditText
    android:id="@+id/etName"
    style="@style/EditTextFont"
    android:inputType="textPersonName" />

我的活动:

private EditText etName;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.form);

    etName = (EditText) findViewById(R.id.etName);
    etName.setOnEditorActionListener(this);
}

@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
   switch (v.getId()) {
   case R.id.etName:
      // actionId will be EditorInfo.IME_NULL if being called 
      // due to the enter key being pressed.
      if ((event.getAction() == KeyEvent.ACTION_DOWN) && 
            (actionId == EditorInfo.IME_NULL)) {
         save();
         return true;
      }
   }
   return false;
}

问候,马蒂亚斯

【问题讨论】:

  • keyCode 变量是 0 而不是 66 是什么意思?您的代码是否有效?
  • 因为keyCode为0,所以if语句中的代码不会被执行。当我在 EditText 中按 enter 时调用 onEditorAction 方法,唯一的问题是 keyCode 不是我预期的 66。
  • 虽然不礼貌,但 Yves Daoust 的回答实际上是正确的。我混合了两种不同的方法。我更正了上面的解决方案。感谢大家的帮助。

标签: android keyevent enter


【解决方案1】:

尝试使用 SDK 的 Enter 键,而不是使用计算机的键盘键。

【讨论】:

  • 在 Android 4.0.3 上的 WXGA800(模拟平板电脑)上运行,屏幕上不显示键盘。不过谢谢你的建议。无论如何问题都解决了,请参阅我对原始问题的评论。
  • 虽然你的问题已经解决了,但是你可以在Android 3.0环境sdk平板中测试一次。打开物理键盘选项后显示模拟器键盘。
【解决方案2】:

来自Android documentation

public abstract boolean onEditorAction(TextView v, int actionId, KeyEvent event)

在执行操作时调用。

参数

v             被点击的视图。

actionId 动作的标识符。这将是您提供的标识符,或者是 EditorInfo.IME_NULL(如果由于按下 Enter 键而被调用)。

事件       如果由回车键触发,这就是事件;否则为空。

退货

如果你已经消费了这个动作,则返回 true,否则返回 false。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-25
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    相关资源
    最近更新 更多