我正在尝试执行一些代码,当我点击"输入"时,现在是Toast
。用户在EditText
中输入内容后键入我的电话键盘,但是当我按下回车键时,听众代码没有被执行。
我已经阅读了大量示例,其中有些人使用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"/>
答案 0 :(得分:0)
您可以尝试这样做
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;
}
有关更详细的说明,请参阅:http://amp.pharm.mssm.edu/clustergrammer/viz/568affd5b6541b84f3a68234。