Каков наилучший способ узнать, какой фрагмент отображается в данный момент?
Я пытаюсь найти что-то аналогичное методу FragmentManager.peek().
Вариант использования: мне нужно отправить фокус экрана на загруженный в данный момент фрагмент. Тем не менее, я чувствую, что мне нужно вручную отслеживать, какой фрагмент отображается в данный момент, чтобы я мог сказать ему, чтобы он сфокусировался.
Конкретно ситуация такова, что у меня есть меню, которое имеет несколько кнопок. Когда пользователь нажимает кнопку, мне нужно перенести фокус с кнопки на определенный вид в текущем загруженном фрагменте, но у меня нет возможности узнать, какой фрагмент загружен в данный момент, это может быть начальный фрагмент, связанный с элементом меню, или это может быть другой Фрагмент, который пришел к тому, что пользователь углубился в исходный Фрагмент... так что моя логика должна быть
pseudo...
if(currentFragment == navButton.myFragmentType)
currentFragment.sendFocusToYourFirstRelevantElement()
else
navButton.loadMyFragmentType()
Моя проблема в том, что я не знаю, что такое отображаемый в данный момент фрагмент, если я не отслеживаю вручную, но это * действительно ужасно.
Надеюсь, есть более нативное решение.
1 ответ
Вы должны отслеживать фрагменты вручную.
Подумайте о том, как работают фрагменты - они предназначены для многократного использования, и, в частности, их может быть несколько на экране одновременно. Из-за этого это не так просто, как просто запрос FragmentManager для текущего отображаемого фрагмента, потому что он не знает, какой отображаемый в данный момент фрагмент вам нужен. Логика, которая потребовалась бы для этих знаний, не может быть заложена в FragmentManager, потому что она очень специфична для вашего приложения.
Для получения дополнительной информации: какие фрагменты я размещаю и показываю?