Получить текущий фрагмент с ViewPager2 - PullRequest
5 голосов
/ 17 апреля 2019

Я перевожу свой ViewPager на ViewPager2, так как последний должен решить все проблемы первого. К сожалению, при использовании его с FragmentStateAdapter я не могу найти какой-либо отображаемый фрагмент.

viewPager.getCurrentItem() дает текущий отображаемый индекс, а adapter.getItem(index) обычно создает новый Fragment для текущего индекса. Если я не сохраню ссылку на все созданные фрагменты в getItem(), я не знаю, как получить доступ к отображаемому фрагменту.

При старом ViewPager одним из решений было вызвать adapter.instantiateItem(index), который вернул бы фрагмент с нужным индексом.

Я что-то упустил с ViewPager2?

1 Ответ

0 голосов
/ 17 апреля 2019

ViewPagerAdapter предназначен для того, чтобы скрыть все эти детали реализации, поэтому прямого способа сделать это не существует.

Вы можете попробовать установить и идентификатор, или тег для фрагмента, когда создаете его в getItem(), а затем используйте fragmentManager.findFragmentById() или fragmentManager.findFragmentByTag() для извлечения.

Однако, выполнение этого кода немного пахнет кодом.Он подсказывает мне, что что-то делается в упражнении, когда это должно быть сделано во фрагменте (или в другом месте).

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

...