Возможно ли получить доступ к текущему фрагменту, просматриваемому ViewPager? - PullRequest
69 голосов
/ 21 декабря 2011

У меня есть приложение с ViewPager и тремя Fragment с.Я пытаюсь выяснить, как получить текущий Fragment просматриваемый, чтобы я мог получить его аргументы.

У меня есть OnPageChangeListener, получающий индекс текущей страницы, но

ViewPager.getChildAt(int position);

возвращает View.Какая связь между этим View и текущим Fragment?

Ответы [ 11 ]

0 голосов
/ 15 января 2014

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

@Override
public Object instantiateItem(ViewGroup container, int position) {
    Object item = super.instantiateItem(container, position);
    if ( item instanceof Fragment ) {
        pageReferenceMap.put(position, (Fragment)item);
    }
    return item;
}

. InstantiateItem вызывается каждый раз, когда к фрагменту в этой позиции обращаются.

...