问题描述
我正在尝试在 Android 3.0+ ActionBar 中添加对 SearchView
的支持,但我无法让 OnCloseListener
工作.
I'm trying to add support for the SearchView
in the Android 3.0+ ActionBar, but I can't get the OnCloseListener
to work.
这是我的代码:
@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:
The search works great and every is working except for the OnCloseListener
. Nothing is being printed to Logcat. Here's the Logcat for when I'm pressing the "Close" button:
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
我已经浏览了文档和示例,但似乎没有任何变化它.我在 Asus Transformer Prime 和 Galaxy Nexus 上运行它,两者都在 Ice Cream Sandwich 上.有什么想法吗?
I've looked through the documentation and samples, but nothing seemed to change it. I'm running it on a Asus Transformer Prime and a Galaxy Nexus, both on Ice Cream Sandwich. Any ideas?
更新:
是的 - System.out.println()
确实有效.证据如下:
Yes - System.out.println()
does work. Here's proof:
@Override
public boolean onQueryTextChange(String newText) {
System.out.println(newText + "hello");
searchLibrary(newText);
return false;
}
此 Logcat 中的结果:
Results in this 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
.然后覆盖未实现的方法.
I also meet this problem, and I have no choice but give up "oncloselistener". Instead, you can get your menuItem, then setOnActionExpandListener
. Then override unimplents methods.
@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;
}
这篇关于SearchView 的 OnCloseListener 不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!