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

mha*_*per 3 android android-searchmanager

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

SearchManager searchManager = (SearchManager) getApplicationContext().getSystemService(Context.SEARCH_SERVICE);
searchManager.setOnCancelListener(this);
Run Code Online (Sandbox Code Playgroud)

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

需要说明的是,搜索功能在执行时效果很好.我只想在用户取消搜索对话框时收到通知,以便我采取行动.此外,我正在使用默认的Android搜索对话框,该对话框在请求时显示在屏幕顶部.

是否需要某种配置,例如在AndroidManifest.xml中,以支持此回调?或者我只是缺少/做一些愚蠢的事情(完全可能)?

Joe*_*Joe 6

您需要使用Activity上下文

SearchManager searchManager = (SearchManager) this.getSystemService(Context.SEARCH_SERVICE);
Run Code Online (Sandbox Code Playgroud)

此外,我相信onDismissListener建议优于onCancel,因为onCancel只是显式的并且不会被后退按钮触发