我已经使用ActionBar Sherlock为我的一个项目实现了搜索功能。所以现在我在ActionBar上有搜索编辑文本,就像官方AB sherlock项目仓库(在github上)的示例中一样:Collapsible action items
我的搜索编辑文本正在过滤活动中的ListView。当用户开始输入某些字符时,ListView将被过滤。我是通过在搜索中添加一个textWatcher来实现的。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(Menu.NONE, SEARCH_ACTION_MENU, 0, "Search")
.setIcon(R.drawable.ic_search)
.setActionView(R.layout.search_edittext)
.setShowAsAction(
MenuItem.SHOW_AS_ACTION_ALWAYS
| MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
/** We get a reference to the search edit */
MenuItemWrapper menuItemWrapper = (MenuItemWrapper) menu.getItem(0);
final EditText searchEdit = (EditText) menuItemWrapper.getActionView();
/** We add a listener search filter listener */
searchEdit.addTextChangedListener(filterWatcher); // filterwatcher is a textWatcher
return true;
}
当我单击搜索图标时,将显示搜索“编辑文本”,并且用户可以开始输入内容。而且,主页按钮显示为“向上主页按钮”(带有左箭头)。
单击此箭头将使搜索文本视图消失,但是如果用户已经开始输入内容,则在用户单击主页“向上”后不再显示搜索文本视图时,将过滤列表视图,并且不会重置列表视图。 ”按钮。
我的问题是:如何拦截“向上”按钮以重置列表视图?我认为这是重置列表的唯一方法。
我已经尝试过:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Log.d(Constants.LOG_TAG, "Home button clicked");
return true;
default:
return super.onOptionsItemSelected(item);
}
}
当“主页”按钮显示为“向上”按钮时,它不起作用。
任何帮助,将不胜感激。
提前致谢,
最佳答案
您需要在视图上实现CollapsibleActionView
才能接收onActionViewCollapsed()
回调。
您还应该升级到dev
分支上的ActionBarSherlock版本,因为在本机操作栏上使用时,它具有可折叠操作项的关键修复。