保持每个片段选择内部ViewPager?

时间:2016-06-23 02:28:28

标签: android android-fragments android-viewpager

我在我的应用程序中在ViewPager中实现了相同的100片段。来自服务器的片段相当大的显示数据。当我输入代码mViewPager.setOffscreenPageLimit (100)时,应用感觉非常沉重。因此,我使用以下方式:删除setOffscreenPageLimit并调用方法来检查服务器上的数据,并在选择片段时显示它。但是当这种情况发生时:Fragment" 1"被选中,然后分段" 2",回到片段" 1",Fragment" 1"将重复该活动。我的问题是如何保持每个片段的活动被选中或返回到在最后一个条件下选择的片段?抱歉我的英文。

2 个答案:

答案 0 :(得分:0)

如果删除setOffscreenPageLimit,保持每个片段活动的方法是将片段的状态数据存储在:

@Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putData("key", fragmentData);
    }

当您离开时,当您再次返回时,您将根据已存储的状态数据更新片段。

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
           fragmentData  = savedInstanceState.getData("key", defaultData);
    }

您应该在viewpager中使用一些片段,不要使用太多。考虑使用片段并在其中显示许多视图和数据。

答案 1 :(得分:0)

  

setOffscreenPageLimit:设置应该的页数   保留在视图层次结构中当前页面的任一侧   闲置状态。超出此限制的页面将从中重新创建   适配器在需要时。

请勿将setOffscreenPageLimit设置得过大,因为视图寻呼机会保持页面处于活动状态,以便您的应用运行缓慢。当您删除setOffscreenPageLimit时,此设置默认为1.这意味着超出此限制(1)的页面将在需要时从适配器重新创建。 https://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit(int)