我在 viewpager 中有 3 个片段(使用兼容性库),第一个片段在应用加载时显示。第 2 和第 3 页有点 CPU 密集型,所以我只想在用户先滑动到它们时才加载它们的内容。
为此,我实现了 ViewPager.OnPageChangeListener 并覆盖 onPageSelected 以在 Fragment 中调用 onResume
public void onPageSelected(int position) {
getItem(viewPager.getCurrentItem()).onResume();
}
在 Fragments onResume 中如下:
@Override
public void onResume() {
super.onResume();
if ((MainActivity) getActivity() != null && ((MainActivity) getActivity()).pager != null && ((MainActivity) getActivity()).pager.getCurrentItem() == 1) {
doCpuIntensiveLoading();
}
}
防止它在实例化且不可见时加载,但在寻呼机的 getCurrentItem() 返回片段的 id 时加载。
但!当我滚动到页面时 getActivity() 返回 null 尽管片段的菜单已填充并且从菜单调用加载正在工作。
如果您需要更多详细信息,请告诉我。