Не вызывается прослушиватель Android search onCancel ()

#android #android-searchmanager

#Android #android-searchmanager

Вопрос:

В методе onCreate () моего основного действия я настраиваю обратный вызов метода onCancel () действия, который будет вызываться (я полагаю), когда пользователь отменит диалоговое окно поиска без выполнения поиска. Вот мой регистрационный код:

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

В моей деятельности реализован SearchManger.OnCancelListener и мой метод onCancel () в настоящее время являются инструкцией Log.d(). Однако всякий раз, когда я отменяю диалоговое окно поиска (например, с помощью кнопки «Назад»), этот метод никогда не вызывается.

Чтобы было понятно, функциональность поиска работает просто отлично при выполнении. Я просто хочу уведомление, когда пользователь отменил диалоговое окно поиска, чтобы я мог принять меры. Кроме того, я использую диалоговое окно поиска Android по умолчанию, которое появляется в верхней части экрана по запросу.

Есть ли какая-то конфигурация, которая мне нужна, например, в AndroidManifest.xml для поддержки этого обратного вызова? Или я просто пропускаю / делаю что-то глупое (вполне возможно)?

Ответ №1:

Вам нужно использовать контекст действия

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

Кроме того, я считаю, что OnDismissListener рекомендуется использовать вместо onCancel, поскольку onCancel является только явным и не запускается кнопкой «Назад»

Комментарии:

1. Это помогло — спасибо! В эмуляторе, который я запускаю, onCancel () вызывается кнопкой «Назад» и щелчком за пределами диалогового окна поиска, поэтому я думаю, что меня это устраивает.

2. Ах, оглянулся на документы, и отмена выполняет обратную обработку — просто не тогда, когда поиск выполняется и закрывается сам по себе — так что это подходящее приложение для вас.