3

我在viewpager中有3個片段(使用兼容性庫),第一個片段在應用程序加載時顯示。 第二頁和第三頁有點CPU密集型,所以我想只在用戶先刷到它們時才加載它們的內容。ViewPager的片段似乎打賭分離?

爲了這個,我已經實現ViewPager.OnPageChangeListener和壓倒使用onPageSelected來調用的onResume在片段的onResume的片段

public void onPageSelected(int position) { 
    getItem(viewPager.getCurrentItem()).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,儘管片段的菜單已填充,並且菜單調用加載正在工作。

請讓我知道你是否需要更多的細節。

回答

0

好的,明白了:必須將這些片段保存在onSaveInstanceState中,並將其恢復到主要活動中,如在this post