Можно ли искать внутри фрагментов? - PullRequest
4 голосов
/ 04 мая 2011

У меня есть приложение для Android, которое мы переносим на Honeycomb / Android 3.0, и мы используем Fragment s в нашем новом интерфейсе.

У меня есть поиск, работающий через виджет, как показано здесь .

Проблема в том, что виджет больше не появляется при использовании Fragment s.Таким образом, вопрос в том, как получить поиск для использования с Fragment s?

Или как заменить эту строку на Fragment s?

getActivity().onSearchRequested();

Ответы [ 2 ]

2 голосов
/ 24 июля 2014

Я решил эту проблему, используя интерфейс / обратные вызовы.

В моем MainActivity я пишу интерфейс обратного вызова:

private SearchRequestedCallback mSearchRequestedCallback;
public void setSearchRequestedCallback(SearchRequestedCallback callback) {
    mSearchRequestedCallback = callback;
}
public interface SearchRequestedCallback {
    void onSearchRequested();
}

В моем Fragment я установил обратный вызов в onStart() и сбросил его в onStop():

@Override
public void onStart() {
    super.onStart();
    getActivity().setTitle(getResources().getString(R.string.app_name));
    ((MainActivity)getActivity()).setSearchRequestedCallback(new SearchRequestedCallback() {
        @Override
        public void onSearchRequested() {
            addFilter();
        }
    });
}
@Override
public void onStop() {
    ((MainActivity)getActivity()).setSearchRequestedCallback(null);
    super.onStop();
}
0 голосов
/ 03 июля 2012

Вы не можете.SearchManager реализован для работы с Activity с, а не Fragment с.См. этот пост для получения дополнительной информации.

...