我有一个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;
}
问候,马蒂亚斯
答案 0 :(得分:0)
尝试使用SDK的Enter键而不是使用计算机的键盘键。
答案 1 :(得分:-2)
public abstract boolean onEditorAction(TextView v, int actionId, KeyEvent event)
正在执行某项操作时调用。
<强>参数强>
v 点击的视图。
actionId 操作的标识符。这将是您提供的标识符,如果由于按下回车键而被调用,则为EditorInfo.IME_NULL。
事件如果由回车键触发,则为事件;否则,这是空的。
<强>返回强>
如果您已经使用了该操作,则返回true,否则返回false。