【发布时间】: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 的回答实际上是正确的。我混合了两种不同的方法。我更正了上面的解决方案。感谢大家的帮助。