У меня есть 3 фрагмента в пейджере (с использованием библиотеки совместимости), первый отображается при загрузке приложения. 2-я и 3-я страницы немного загружают процессор, поэтому я хотел бы загружать их содержимое только тогда, когда пользователь сначала прокручивает их.
для этого я реализовал ViewPager.OnPageChangeListener и переопределил onPageSelected для вызова onResume во фрагменте.
public void onPageSelected(int position) {
getItem(viewPager.getCurrentItem()).onResume();
}
во Фрагментах onResume следующее:
@Override
public void onResume() {
super.onResume();
if ((MainActivity) getActivity() != null && ((MainActivity) getActivity()).pager != null && ((MainActivity) getActivity()).pager.getCurrentItem() == 1) {
doCpuIntensiveLoading();
}
}
чтобы предотвратить его загрузку при создании и невидимости, но для загрузки, когда пейджер getCurrentItem() возвращает идентификатор фрагмента.
но! когда я прокручиваю страницу, getActivity() возвращает null, хотя меню фрагмента заполнено, и вызов загрузки из меню работает.
пожалуйста, дайте мне знать, если вам нужна дополнительная информация.