#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. Ах, оглянулся на документы, и отмена выполняет обратную обработку — просто не тогда, когда поиск выполняется и закрывается сам по себе — так что это подходящее приложение для вас.