在我的计算机键盘上按Enter键时,获取keyCode 0而不是66

时间:2012-02-17 11:30:56

标签: android keyevent enter

我有一个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;
}

问候,马蒂亚斯

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:-2)

来自Android documentation

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

正在执行某项操作时调用。

     

<强>参数

     

v 点击的视图。

     

actionId 操作的标识符。这将是您提供的标识符,如果由于按下回车键而被调用,则为EditorInfo.IME_NULL。

     

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

     

<强>返回

     

如果您已经使用了该操作,则返回true,否则返回false。