Я буду держать вопрос коротким и простым, насколько это возможно по-человечески.
View activeView = mViewPager.getChildAt(mViewPager.getCurrentItem());
Возвращает дочерний вид, когда текущий элемент равен 0 и 1. Но если текущий элемент равен 2, он возвращает null
. Почему это?
Позвольте мне перефразировать себя. Как получить дочерний вид ViewPager в любой позиции позиции?
Оказывается, getChildAt(int)
не был правильным. То, что я сделал, это получить Адаптер, используемый в ViewPager, и нашел мои взгляды оттуда:
adapter = mViewPager.getAdapter(); Fragment fragment = adapter.getItem(mViewPager.getCurrentItem()); View activeView = fragment.getView();
Как уже отмечалось, viewPager будет содержать только текущего дочернего и смежных детей (currentItem () +/- 1), если иначе не указано через setOffscreenPageLimit()
Добавить тег в представление возврата Viewpager.
Ниже ссылка поможет вам: https://stackoverflow.com/a/20186828/1271891
Адаптер вашего пейджера просмотра содержит максимум 2 страницы, т. Е. 2 вида / фрагмента, остальные из них переработаны. В другом случае вы не упомянули, что у вас может быть 2 страницы / просмотров в ViewPager.
Посмотрите на mViewPager.setOffscreenPageLimit()
Сколько детских взглядов должно быть?
Также ViewPager не загружает все дочерние элементы одновременно. Только тот, который он показывает, и следующий. Вы можете использовать mViewPager.setOffscreenPageLimit()
, например, 3 или 4, чтобы «предварительно загрузить» больше элементов в просмотрщик.
Во время моих попыток найти способ украсить андроидные взгляды, я думаю, что я определил альтернативное решение для проблемы OP, которую я зарегистрировал в своем блоге . Я связываюсь с ним, поскольку код, похоже, слишком много для включения здесь всего.
Решение, которое я предлагаю:
null
если это представление в настоящее время не загружено, либо соответствующее представление. (Этот вопрос очень прост для этого, в котором я опубликовал тот же ответ ).