我正在尝试添加SearchView对Android 3.0+ ActionBar的支持,但我无法让它OnCloseListener工作.
这是我的代码:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
searchView = (SearchView) menu.findItem(R.id.search_textbox).getActionView();
searchView.setOnQueryTextListener(new OnQueryTextListener() {
@Override
public boolean onQueryTextChange(String newText) {
searchLibrary(newText);
return false;
}
@Override
public boolean onQueryTextSubmit(String query) { return false; }
});
searchView.setOnCloseListener(new OnCloseListener() {
@Override
public boolean onClose() {
System.out.println("Testing. 1, 2, 3...");
return false;
}
});
return true;
}
Run Code Online (Sandbox Code Playgroud)
搜索效果很好,每个人都在工作,除了OnCloseListener.没有任何东西被打印到Logcat.这是我按下"关闭"按钮时的Logcat:
02-17 13:01:52.914: I/TextType(446): TextType = 0x0
02-17 13:01:57.344: I/TextType(446): TextType = 0x0
02-17 13:02:02.944: I/TextType(446): …Run Code Online (Sandbox Code Playgroud) android android-3.0-honeycomb android-4.0-ice-cream-sandwich android-actionbar
我更改android软键盘以显示搜索图标而不是Enter图标.我的问题是:如何检测用户点击该搜索按钮?
如果(在Android中)我有一个EditText框,当用户输入数据并点击return/Next时,如何触发事件?
我尝试过使用下面的代码,但似乎没有效果.我还从类型new extView.OnEditorActionListener(){}得到一个'方法onEditorAction(EditText,int,KeyEvent)从不在本地使用'错误.
myEditText.setOnEditorActionListener(new EditText.OnEditorActionListener() {
public boolean onEditorAction(EditText v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_NEXT)
{
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用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);
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用OnKeyListner.但它似乎也没有用.
searchView.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
//Do something
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
这似乎是一件很简单的事情,但我无法让它发挥作用.有什么建议?
编辑
我已经找了一段时间的解决方案,在发布这个问题后的几分钟,我找到了解决方案.
在这个帖子中,我发现这不是一个错误,但它实际上是故意的.
Android SearchView.OnQueryTextListener OnQueryTextSubmit未在空查询字符串上触发
所以我刚刚下载了ActionBarSherlock并对onSubmitQuery()方法进行了一些修改
从
private void onSubmitQuery() {
CharSequence query = mQueryTextView.getText();
if (query != null && TextUtils.getTrimmedLength(query) …Run Code Online (Sandbox Code Playgroud) 我正在尝试将最近的搜索添加到工具栏上的 SearchView:
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}
@Override
public boolean onQueryTextChange(String s) {
if (s!= null )
{
if (s.isEmpty()){
loadRecentList();
}
else{
search(s);
}
}
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
搜索工作正常,但我看不到最近的列表结果。
我发现这个Android SearchView.OnQueryTextListener OnQueryTextSubmit 没有在空查询字符串上触发
但是修改 ActionBar 库并不是一个好的解决方案。
有人有其他解决方案吗?谢谢。
编辑:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main_activity, menu);
searchItem = menu.findItem(R.id.btn_earch);
initSearchView();
setSearchViewListener();
return super.onCreateOptionsMenu(menu);
}
protected void initSearchView() {
final String CURSOR_RESOURCE_ID = "mCursorDrawableRes";
final int THRESHOLD …Run Code Online (Sandbox Code Playgroud) 我在过滤域适配器中的数据时遇到了问题.我正在创建searchview以通过过滤realm适配器中的数据来搜索数据.
我的searchview实现代码是
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.main_menu, menu);
final MenuItem item = menu.findItem(R.id.action_search);
final SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
Log.e("Filter ","Filtering");
searchView.setOnQueryTextListener(this);
MenuItemCompat.setOnActionExpandListener(item,
new MenuItemCompat.OnActionExpandListener() {
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
// Do something when collapsed
adapter.setFilter(realmPhonecallList);
Log.e("Filter 1","Filtering");
return true; // Return true to collapse action view
}
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
// Do something when expanded
return true; // Return true to expand action view
}
});
}
@Override
public boolean …Run Code Online (Sandbox Code Playgroud)