我正在尝试执行一些代码,当用户在EditText
中输入内容后,我按下手机键盘上的"enter"键时,该代码目前是Toast
,但当我按下enter时,侦听器代码不会执行。
我读过很多例子,有些人使用setOnKeyListener()
,有些人则使用setOnEditListener()
。setOnEditListener()
给我造成了错误,而setOnKeyListener()
就是不执行,这就是为什么我选择setOnKeyListener()
,因为我认为这是一个更容易的修复方法。
mQuery = (EditText) findViewById(R.id.query);
mQuery.setImeActionLabel("Search", KeyEvent.KEYCODE_ENTER);
mQuery.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
Toast.makeText(SearchActivity.this, event.getAction(), Toast.LENGTH_LONG).show();
if(event.getAction() == KeyEvent.KEYCODE_ENTER){
//TODO implement action
Toast.makeText(SearchActivity.this, "GETTING IT", Toast.LENGTH_LONG).show();
return true;
}
return false;
}
});
编辑:这是我的xml文件。我对这里的imeAction
标签什么都不做
<EditText
android:id="@+id/query"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:inputType="text"/>
您可以尝试执行此
EditText mQuery = (EditText) findViewById(R.id.query);
mQuery.setOnKeyListener(this);
}
@Override
public boolean onKey(View view, int keyCode, KeyEvent event) {
if (keyCode == EditorInfo.IME_ACTION_SEARCH ||
keyCode == EditorInfo.IME_ACTION_DONE ||
event.getAction() == KeyEvent.ACTION_DOWN &&
event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
if (!event.isShiftPressed()) {
//TODO implement action
Toast.makeText(SearchActivity.this, "GETTING IT", Toast.LENGTH_LONG).show();
return true;
}
return false;
}
有关更详细的解释,请参阅:Android EditText onKey Event。