如何在后按时以编程方式关闭 SearchView?在片段中

Posted

技术标签:

【中文标题】如何在后按时以编程方式关闭 SearchView?在片段中【英文标题】:How to close a SearchView programmatically on back pressed? in Fragment 【发布时间】:2020-11-22 06:30:41 【问题描述】:

我目前在我的应用的操作栏中有一个 SearchView。当我单击搜索图标时,SearchView 会展开,键盘会按预期弹出。单击 SearchView 框中的“X”会按预期关闭 SearchView。但是,当 SearchView 被激活并按下“返回”按钮时,我的应用程序将退出。这是正确的行为,但我现在要做的是在我的片段中捕获后退按钮按下,并在 SearchView 可见时让它关闭 SearchView(不是我的应用程序)。有没有办法在按下后退按钮时以编程方式调用 SearchView OnCloseListener()? 我现在在片段中的我的 onCreate() 中拥有什么:

        activity?.onBackPressedDispatcher?.addCallback(this, object : OnBackPressedCallback(true) 
            override fun handleOnBackPressed() 
                if (!searchView.isIconified) 

                    hideKeyboard()
                   searchView.onActionViewCollapsed()
                    false


                

            
        )

这工作正常,但我有 2 个问题,我必须双击返回按钮,第二个问题即使我返回我的回收站视图列表,我也永远无法存在该应用程序

【问题讨论】:

【参考方案1】:

经过几天的搜索,这对我有用: 活动?.onBackPressedDispatcher?.addCallback(this, object : OnBackPressedCallback(true) 覆盖有趣的handleOnBackPressed() 如果(!searchView.isIconified) 工具栏.collapseActionView() 别的 this.isEnabled = false 活动?.onBackPressed() )

【讨论】:

应该是searchView.onActionViewCollapsed()而不是toolbar.collapseActionView()

以上是关于如何在后按时以编程方式关闭 SearchView?在片段中的主要内容,如果未能解决你的问题,请参考以下文章

卸载所有先前安装的屏幕以在后按时退出应用程序

以编程方式将视频转换为 FLV [关闭]

Javascript - 以与摆动路径在后效中的工作方式相同的方式以编程方式为形状设置动画

如何以编程方式关闭 Discord?

自定义 TextInputLayout 在后按时设置错误的值

导航组件防止在后按时重新创建片段