Слушатель Android search onCancel() не вызывается

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

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

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

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

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


person mharper    schedule 19.04.2011    source источник


Ответы (1)


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

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

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

person Joe    schedule 19.04.2011
comment
Это помогло - спасибо! В эмуляторе, который я запускаю, onCancel() вызывается кнопкой «Назад» и нажатием вне стандартного диалогового окна поиска, поэтому я думаю, что с этим все в порядке. - person mharper; 20.04.2011
comment
А, взглянув на документы, отмена действительно обрабатывается — но не тогда, когда поиск выполняется и закрывается сам по себе — так что это хороший вызов для вашего приложения. - person Joe; 20.04.2011