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

3
在我的主Activity的onCreate()方法中,我设置了一个回调到该Activity的onCancel()方法(我认为是)在搜索对话框被用户取消而没有发出搜索时调用。以下是我的注册代码:
SearchManager searchManager = (SearchManager) getApplicationContext().getSystemService(Context.SEARCH_SERVICE);
searchManager.setOnCancelListener(this);

我的Activity实现了SearchManager.OnCancelListener接口,我的onCancel()方法目前只是一个Log.d()语句。然而,每当我取消搜索对话框(例如使用返回按钮),这个方法从未被调用过。
明确一点,当执行搜索功能时,它可以正常工作。我只想在用户取消搜索对话框时得到通知,以便我可以采取行动。此外,我正在使用默认的Android搜索对话框,该对话框在请求时出现在屏幕顶部。
是否需要某种配置,例如在AndroidManifest.xml中,才能支持此回调?还是我只是漏掉/做错了什么愚蠢的事情(完全有可能)?
1个回答

6

您需要使用活动上下文(Activity context)

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

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

做到了--谢谢!在我运行的模拟器中,onCancel()方法会被返回按钮和点击搜索对话框外部调用,所以我认为这样是可以的。 - mharper
啊,回头看了一下文档,取消确实处理了返回--只是当搜索被执行并自动关闭时不会--所以这对你的应用程序是个好选择。 - Joe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接