3

我在 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 尽管片段的菜单已填充并且从菜单调用加载正在工作。

如果您需要更多详细信息,请告诉我。

4

0 回答 0