gpt4 book ai didi

android - 如何检测 SearchView 后退按钮按下?

转载 作者:可可西里 更新时间:2023-11-01 18:49:56 28 4
gpt4 key购买 nike

我使用单个 Activity 来显示 SearchView 以及显示搜索结果。搜索结果只是项目的一个子集,因此搜索充当过滤器。一切似乎都工作正常,只是我不知道如何在单击 SearchView 的后退按钮时恢复 View 中的所有项目。

或者也许有另一种方法可以检测用户何时从搜索结果导航到上一个 View (在我的例子中,是同一个 View )。

谢谢

最佳答案

所以看看你的问题的标题,你不确定如何检测 SearchView 何时关闭,因此你无法将你的 View 恢复到“正常”状态当 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.
}
});

编辑:

适用于 Android 4.0+ 的更新解决方案

显然 OnCloseListener 有问题并且不能在较新版本的 Android (4.0+) 上运行。请参阅:https://code.google.com/p/android/issues/detail?id=25758

解决这个问题的方法是使用 SearchView 的支持库版本:

我的 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 在评论中添加的链接:

how to handle back button of Search View in android

这也展示了如何使用 OnActionExpandListener 而不是 OnCloseListener

希望这对您有所帮助。

关于android - 如何检测 SearchView 后退按钮按下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37039511/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com