Как использовать представление поиска, определенное в параметрах меню MainActivity во фрагментах?

Я пытаюсь использовать поиск на панели инструментов (меню) в нескольких фрагментах. Таким образом, если я переключусь на различные фрагменты, поисковое представление будет применяться и искать только этот фрагмент. После определения его в MainActivity, как мне использовать его во фрагментах?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
29
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны сохранять ссылки на свои фрагменты, как хотите. Затем, в зависимости от вашей ситуации, когда вы вводите запрос или любым другим способом, вам нужно выполнить поиск в вашем фрагменте, например:

myFragment.doSearch(query)

Если у вас есть список фрагментов и вам нужно сделать вызов только в видимом в данный момент, вы можете определить переменную isActuallyVisible в каждом фрагменте (в BaseFragment, если он у вас есть) и изменить ее следующим образом:

public void setMenuVisibility(final boolean visible) {
    super.setMenuVisibility(visible);
    isActuallyVisible = visible;        
}

Затем вы можете сделать поиск следующим образом:

for (Fragment frag : fragmentsList) { 
    if (frag.isActuallyVisible) {
        frag.doSearch(query);
        break;
    }
}

Надеюсь, это поможет вам найти правильное решение

Хорошо, а как мне тогда обработать поисковый запрос во фрагменте? Я создаю все (меню и фрагменты в MainActivity), затем использую меню параметров для переключения на каждый фрагмент. Использую ли я настройки?

blazedtrailz 28.05.2019 12:27

Вам необходимо реализовать метод поиска в каждом имеющемся у вас фрагменте и передать запрос из вашего MainActivity в тот фрагмент, где вы хотите выполнить поиск.

Dmitriy Miyai 28.05.2019 12:47

Другие вопросы по теме