Каков наилучший способ узнать, какой фрагмент отображается в данный момент?

Я пытаюсь найти что-то аналогичное методу FragmentManager.peek().

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

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

pseudo...
if(currentFragment == navButton.myFragmentType)
   currentFragment.sendFocusToYourFirstRelevantElement()
else
   navButton.loadMyFragmentType()

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

Надеюсь, есть более нативное решение.

1 ответ

Решение

Вы должны отслеживать фрагменты вручную.
Подумайте о том, как работают фрагменты - они предназначены для многократного использования, и, в частности, их может быть несколько на экране одновременно. Из-за этого это не так просто, как просто запрос FragmentManager для текущего отображаемого фрагмента, потому что он не знает, какой отображаемый в данный момент фрагмент вам нужен. Логика, которая потребовалась бы для этих знаний, не может быть заложена в FragmentManager, потому что она очень специфична для вашего приложения.

Для получения дополнительной информации: какие фрагменты я размещаю и показываю?

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