Android 搜索 onCancel() 监听器未被调用

标签 android android-searchmanager

在我的主 Activity 的 onCreate() 方法中,我设置了一个回调到 Activity 的 onCancel() 方法,当搜索对话框被用户取消而不发出搜索时调用(我相信)。这是我的注册码:

SearchManager searchManager = (SearchManager) getApplicationContext().getSystemService(Context.SEARCH_SERVICE);
searchManager.setOnCancelListener(this);

我的 Activity 实现了 SearchManger.OnCancelListener,我的 onCancel() 方法目前是一个 Log.d() 语句。但是,每当我取消搜索对话框(例如使用后退按钮)时,都不会调用此方法。

需要说明的是,搜索功能在执行时运行良好。我只想在用户取消搜索对话框时收到通知,以便我采取行动。此外,我使用的是默认的 Android 搜索对话框,该对话框会在请求时出现在屏幕顶部。

我需要某种配置吗? G。在AndroidManifest.xml中,为了支持这个回调?还是我只是想念/做了一些愚蠢的事情(完全有可能)?

最佳答案

你需要使用 Activity 上下文

SearchManager searchManager = (SearchManager) this.getSystemService(Context.SEARCH_SERVICE);

此外,我认为 onDismissListener 比 onCancel 更值得推荐,因为 onCancel 只是显式的,不会被后退按钮触发

关于Android 搜索 onCancel() 监听器未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5723340/

相关文章:

android - 想在调用 WebChromeClient#onCreateWindow 时知道目标 url

android - 从使用 SearchManager 启动的 Activity 中获取结果

android - 当前 Activity 未收到搜索 Intent

java - 机器人 : adding SearchView inside a Custom ListView with Custom Adapter

Android:如何检测点击自定义 SearchView 元素

android - 在附加的堆栈跟踪中获取了资源,但从未释放。有关避免资源泄漏的信息,请参阅 java.io.Closeable

android - 想在 android 中的 CardView 的卡片之间添加水平间距?

java - Ticklistener 内的 Arrayupdate 时应用程序崩溃

android - flutter : How to prevent rebuild of whole Reorderable Listview?

android - SearchView getActionView 返回 null