Java Android:捕捉每一种可能类型的;输入“;键(硬键和软键)?
你好 我有一个Android应用程序(v2.3.3及更高版本),允许您通过Java Android:捕捉每一种可能类型的;输入“;键(硬键和软键)?,java,android,android-edittext,Java,Android,Android Edittext,你好 我有一个Android应用程序(v2.3.3及更高版本),允许您通过EditText控件进行搜索。我使用以下代码检测用户何时完成搜索,并按下硬键或软键执行搜索: EditText editText = (EditText)findViewById(R.id.search_box); editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public b
EditText
控件进行搜索。我使用以下代码检测用户何时完成搜索,并按下硬键或软键执行搜索:
EditText editText = (EditText)findViewById(R.id.search_box);
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH ||
actionId == EditorInfo.IME_ACTION_DONE ||
(event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_ENTER))
{
performSearch();
return true;
}
return false;
}
});
显然,这并没有抓住所有可能表达“回车”的方式,因为一位测试人员刚刚告诉我,他们的HTC Evo软键盘上的“回车”键没有任何作用。搜索硬键(放大镜)可以工作,但此代码无法从软键盘捕获事件
阅读一些帖子后,这类问题的大多数答案都包含了上述逻辑的部分或全部。我也读到HTC做一些键盘的东西不同
有人有防弹代码来检测任何设备上的“输入”输入吗
谢谢大家! 我已经有同样的问题了。取消对actionId的检查,只需检查if语句中的
event.getAction()==KeyEvent.ACTION\u DOWN
:
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == KeyEvent.ACTION_DOWN)
{
performSearch();
return true;
}
return false;
}
我认为textchangelistener可以捕获enter键,试试这个
commentt.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
// if enter is added to your CharSequence
// {
// do search
// }
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
没用<代码>事件为
空
,因此它因空点异常
而死亡。我目前正在测试2.3.3设备。
commentt.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
// if enter is added to your CharSequence
// {
// do search
// }
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});