我正在尝试在Android 3.0+ ActionBar中添加对SearchView
的支持,但是我无法使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;
}
搜索效果很好,除了
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): TextType = 0x0
我浏览了the documentation和示例,但似乎没有任何改变。我正在华硕Transformer Prime和Galaxy Nexus上运行它,两者都在Ice Cream Sandwich上运行。有任何想法吗?
更新:
是的-
System.out.println()
确实有效。这是证明: @Override
public boolean onQueryTextChange(String newText) {
System.out.println(newText + "hello");
searchLibrary(newText);
return false;
}
此Logcat中的结果:
02-17 13:04:20.094: I/System.out(21152): hello
02-17 13:04:24.914: I/System.out(21152): thello
02-17 13:04:25.394: I/System.out(21152): tehello
02-17 13:04:25.784: I/System.out(21152): teshello
02-17 13:04:26.064: I/System.out(21152): testhello
最佳答案
我也遇到了这个问题,我别无选择,只能放弃“oncloselistener”。相反,您可以获取menuItem,然后获取setOnActionExpandListener
。然后重写unimplents方法。
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
// TODO Auto-generated method stub
Log.d("*******","onMenuItemActionExpand");
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
//do what you want to when close the sesarchview
//remember to return true;
Log.d("*******","onMenuItemActionCollapse");
return true;
}
关于android - SearchView的OnCloseListener不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9327826/