3

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

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

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

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

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

4

1 回答 1

6

您需要使用活动上下文

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

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

于 2011-04-19T22:32:17.413 回答