【问题标题】:Android search onCancel() listener not being called未调用Android搜索onCancel()侦听器
【发布时间】:2011-04-19 22:10:57
【问题描述】:

在我的主 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中,为了支持这个回调?还是我只是想念/做一些愚蠢的事情(完全有可能)?

【问题讨论】:

    标签: android android-searchmanager


    【解决方案1】:

    您需要使用 Activity 上下文

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

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

    【讨论】:

    • 成功了——谢谢!在我正在运行的模拟器中,onCancel() 被后退按钮调用,并通过在预设搜索对话框外部单击来调用,所以我认为我可以接受。
    • 啊,回头看看文档,cancel 确实会处理回来——只是不是在执行搜索并自行关闭时——所以这对你的应用来说是一个很好的选择。
    猜你喜欢
    • 2012-04-30
    • 2019-09-01
    • 2019-07-25
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    • 2017-09-24
    相关资源
    最近更新 更多