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

2024-01-07

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

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

Thanks


因此,看看你的问题的标题,你不知道如何检测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.

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检测SearchView后退按钮按下? 的相关文章

随机推荐

  • 为什么施特拉森矩阵乘法比标准矩阵乘法慢得多?

    I have written programs in C Python and Java for matrix multiplication and tested their speed for multiplying two 2000 x
  • 如何转换 Shapefile 的坐标?

    我正在尝试将邻居数据放入我的应用程序中 但我使用的数据存在问题 这些数据是我从here http gispub02 sfgov org website sfshare catalog realtor neighborhoods zip 该文
  • 如何在 Swift 中重写 setter

    超类 class MySuperView UIView var aProperty 子类继承超类 class Subclass MySuperClass I want to override the aProperty s setter g
  • Fluent-bit 可以解析一个文件中的多种类型的日志行吗?

    我在 k8s 中有一个相当简单的 Apache 部署 使用 Fluent bit v1 5 作为日志转发器 我的设置与下面存储库中的设置几乎相同 我正在运行 AWS EKS 并将日志输出到 AWS ElasticSearch Service
  • 更新新版本应用程序时删除sqlite数据库

    我已经上传了一个 apk 版本 1 0 其中有 22 个表SQLite数据库在 Google Play 商店上 现在我想在新版本 2 0 版 应用程序中更新包含 36 个表的数据库 我正在存储datebase在默认位置 所以当我按时 清除
  • Lua 中的 ISO 8601 时间戳

    如何将时间戳转换为 ISO 8601 格式 例如2009 01 28T21 49 59 000Z 在 Lua 中 我专门尝试使用HttpLua模块 http wiki nginx org HttpLuaModule在 Nginx 中 Try
  • JAI create 似乎使文件描述符保持打开状态

    我有一些旧代码直到最近才工作 但现在似乎很糟糕 因为它在使用 OpenJDK 6 而不是 Java SE 6 的新服务器上运行 问题似乎围绕着 JAI create 我有 jpeg 文件 我将其缩放并转换为 png 文件 这段代码过去工作时
  • ClassNotFoundException:重建后的 org.springframework.cglib.transform.impl.MemorySafeUndeclaredThrowableStrategy

    当尝试在 Tomcat 上运行我的项目时 我遇到了这个奇怪的错误 直到几天前 一切都还好 从那以后我就没有改变过任何一行代码 在一切开始失败之前我做的唯一一件事是 Maven 上下文菜单中的 更新项目 Aug 21 2013 4 39 48
  • HTML 自动嵌入最近从 YouTube 频道上传的视频

    我想知道是否有办法将最近上传的内容从 YouTube 频道自动嵌入到网站 我什至不知道从哪里开始 帮助 使用以下代码通过指定频道 ID 而不是频道名称来自动嵌入 YouTube 频道的最新视频 var channelID UC0xXUfNS
  • 是否可以在 macOS 上以编程方式更改 XDR 显示参考模式(又名预设)?

    Apple 的 XDR 显示器 例如 Pro Display XDR 和 Liquid Retina Display XDR 支持显示参考模式 也称为预设 这些可以在 系统首选项 gt 显示 gt 显示设置 gt 预设 中进行更改 选择 X
  • 在 Laravel 5.4 中将外键 bigInteger 设置为 bigIncrements

    因此 我尝试在 Laravel 的迁移文件中设置外键 以便用户表很简单 但我尝试使用 bigIncrements 而不是立场增量 public function up Schema create users function Bluepri
  • 将数据表拆分为小表 R

    我有一个下表 超过 1k 行 x1 x2 x3 x4 7809 243638 1 1 7809 243638 1 1 7809 243638 1 1 3453 222222 1 0 我需要根据第二列将此表拆分为小表 将在我的环境中作为数据框
  • 确保 CSV 输出中保留长数字

    我有一个 R 数据框 需要保存为 csv 文件 但是在保存为 csv 文件时 一个数字列会更改其格式 我有一个名为 ID 的字符列 如下所示 df lt data frame ID as character 1181050000000002
  • 将新选项卡添加到选项卡栏控制器

    我正在创建一个标签栏 iOS 应用程序 选项卡栏视图控制器有两个选项卡 每个选项卡都连接到一个视图控制器 它看起来是这样的 我需要向选项卡控制器添加更多选项卡 我在故事板中这样做如下 我添加了一个新的视图控制器 我按住 Control 键并
  • 从控制器重定向到项目外部的不同 URL

    我如何从我的控制器重定向到不同的网址 例如 yahoo com hotmail com 我正在使用 Spring 3 0 并使用配置而不是注释 我忘记提及的一件事是 url 将是用户输入 因此无法将其添加到配置中 谢谢 高卢人 您可以在控制
  • 如何强制应用程序更改 iOS/Objective-C 中的语言?

    我在让应用程序立即更改语言时遇到问题 例如this app https itunes apple com app zalo nhan tin kieu moi id579523206 mt 8 我发现了很多类似的问题this https s
  • subprocess.check_output() 没有输出

    我正在尝试在 Python 2 7 5 中运行以下代码 output subprocess check output commandList print len output 我的命令列表是一个参数列表 例如 ls l 但后来我发现即使我有
  • 在magento2中运行时设置包和主题

    我的包名称是 company 主题名称是 web 我还有另一个名为 system 的包 其主题名为 component 运行时来自块文件 但我想从 magento2 的前端设置该主题和包 如果您想在 magento 中运行时设置包和主题 只
  • 无法通过更改宽度或 Flex-basis 来隐藏 Flex 项目

    我想达到这样的效果 在默认状态下 有四个按钮 其中之一是 移动 按钮 当用户单击它时 我想展开按钮并显示其他文本和输入 但是我无法达到 默认状态 收件人 总是出现 我努力了flex basis and width 0px但没有效果 就像这样
  • 如何检测SearchView后退按钮按下?

    我使用单个活动来显示 SearchView 以及显示搜索结果 搜索结果只是项目的子集 因此搜索充当过滤器 一切似乎都工作正常 除了我不知道如何在单击 SearchView 的后退按钮时恢复视图中的所有项目 或者也许还有另一种方法来检测用户何