2016-08-17 3 views
0

Я использовал FragmentStatePagerAdapter для перемещения между фрагментами с одинаковой компоновкой. В фрагменте onActivityCreated() я установил панель действия в панель инструментов текущего фрагмента. Проблема заключается в том, что viewpager предварительно загружает фрагменты, так как ограничение на экранной странице установлено равным 2, что делает недействительными все, кроме последних setSupportActionBar(). Любая помощь?Android FragmentStatePagerAdapter setSupportActionBar()

Я знаю, что я могу хранить ссылки на все текущие активные страницы и вместо этого звонить setSupportActionBar() в onPageSelected(). Но это считало плохую практику, не так ли?

Обновление: Подтверждено, что даже использовать WeakReference, фрагменты по-прежнему не освобождаются.

ответ

0

Один способ - использовать setUserVisibleHint(boolean isVisibleToUser) Метод Фрагмента и там установить панель инструментов.

Также вы можете прикрепить OnPageChangeListener на ViewPager и обновить панель инструментов, когда выбрана страница.

+0

Для первого решения я googled, что 'setUserVisibleHint()' вызывается перед 'onCreateView()', и я могу подтвердить, что предварительно загруженные фрагменты также вызывают 'onCreateView()', прежде чем они станут видимыми для пользователя. Порядок первого вызова фрагмента непредсказуем. Для второго решения, не так ли плохо вмешиваться в управление фрагментами? – mljli

Смежные вопросы