【发布时间】:2013-04-06 06:01:46
【问题描述】:
我正在尝试使用 SearchView 并且一切正常,但我想搜索空字符串时除外。
当我删除最后一个字符时,onQueryTextChange 会做出反应,但我希望用户能够在搜索字段为空时按下搜索按钮。
final SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextChange(String newText) {
// Do something
return true;
}
@Override
public boolean onQueryTextSubmit(String query) {
// Do something
return true;
}
};
searchView.setOnQueryTextListener(queryTextListener);
我也尝试过使用 OnKeyListner。但它似乎也不起作用。
searchView.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
//Do something
return true;
}
});
这似乎是一件很简单的事情,但我无法让它发挥作用。有什么建议吗?
编辑
我已经寻找了一段时间的解决方案,在发布此消息几分钟后,我找到了解决方案。
在这个帖子上我发现这不是一个错误,但实际上是故意的。
Android SearchView.OnQueryTextListener OnQueryTextSubmit not fired on empty query string
所以我刚刚下载了ActionBarSherlock,并对onSubmitQuery()方法做了一些修改
来自
private void onSubmitQuery() {
CharSequence query = mQueryTextView.getText();
if (query != null && TextUtils.getTrimmedLength(query) > 0) {
if (mOnQueryChangeListener == null
|| !mOnQueryChangeListener.onQueryTextSubmit(query.toString())) {
if (mSearchable != null) {
launchQuerySearch(KeyEvent.KEYCODE_UNKNOWN, null, query.toString());
setImeVisibility(false);
}
dismissSuggestions();
}
}
}
以及修改后的版本
private void onSubmitQuery() {
CharSequence query = mQueryTextView.getText();
if(query == null) {query = "";}
if (mOnQueryChangeListener == null
|| !mOnQueryChangeListener.onQueryTextSubmit(query.toString())) {
if (mSearchable != null) {
launchQuerySearch(KeyEvent.KEYCODE_UNKNOWN, null, query.toString());
setImeVisibility(false);
}
dismissSuggestions();
}
}
如果其他人遇到此问题,希望这会有所帮助。
【问题讨论】:
-
您可以回答自己的问题,而不是编辑您的原始问题。
标签: java android searchview