因此,看看你的问题的标题,你不知道如何检测SearchView
正在关闭,因此当SearchView
已经不开放了。
自 Android 4.0+ 起已过时的解决方案
(简单)解决方案是添加:SearchView.OnCloseListener
给你的SearchView
, 像这样:
SearchView.setOnCloseListener(new SearchView.OnCloseListener() {
@Override
public boolean onClose() {
// This is where you can be notified when the `SearchView` is closed
// and change your views you see fit.
}
});
EDIT:
更新后的解决方案适用于 Android 4.0+
显然是OnCloseListener
有问题并且不适用于较新版本的 Android (4.0+)。看:https://code.google.com/p/android/issues/detail?id=25758 https://code.google.com/p/android/issues/detail?id=25758
解决方案是使用支持库版本SearchView
:
My onCreateOptionsMenu
看起来像这样:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
MenuItem searchMenuItem = menu.findItem(R.id.searchView);
SearchView searchView = (SearchView) searchMenuItem.getActionView();
MenuItemCompat.setOnActionExpandListener(searchMenuItem, new MenuItemCompat.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
Toast.makeText(ScrollingActivity.this, "onMenuItemActionExpand called", Toast.LENGTH_SHORT).show();
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
Toast.makeText(ScrollingActivity.this, "onMenutItemActionCollapse called", Toast.LENGTH_SHORT).show();
return true;
}
});
}
至于为什么谷歌甚至懒得在文档中写评论我不知道,但这很可悲。
EDIT2:
只需添加@MateiRadu 在评论中添加的链接:
如何在android中处理搜索视图的后退按钮 https://stackoverflow.com/questions/25842555/how-to-handle-back-button-of-search-view-in-android
这也展示了如何使用OnActionExpandListener
而不是OnCloseListener
.
希望这可以帮助。