ViewPager和碎片问题

时间:2015-02-05 08:17:09

标签: android android-fragments android-viewpager

假设我在fragments内部有viewPager个适配器。

每次滚动到fragment

时,是否会创建视图(在创建视图上调用)

OR

当我们尝试设置适配器时,它是仅在主活动的初始化中调用的吗?

如果是第二个,那么一开始就会做繁重的工作。如果它是第一个,那么我必须保存片段状态,并且不能一直调用它的init方法。

提前致谢。

    List<Fragment> l = new ArrayList<>();
    l.add(Fragment.instantiate(this, DashBoard.class.getName()));
    l.add(Fragment.instantiate(this,Expenses.class.getName()));
    l.add(Fragment.instantiate(this,Gross.class.getName()));
    SliderAdapter sa = new SliderAdapter(getSupportFragmentManager(),l);
    vp = (ViewPager) findViewById(R.id.viewPager);
    vp.setAdapter(sa);

2 个答案:

答案 0 :(得分:1)

是的,每次滑动片段时都会调用onCreteView

解决方案:其中一个解决方案可以使用:

public void setOffscreenPageLimit (int limit) api

将处于空闲状态的视图层次结构中当前页面任一侧应保留的页数设置为空闲状态。超出此限制的页面将在需要时从适配器重新创建。 参考Android Doc

答案 1 :(得分:1)

不,每次向左或向右滑动都不会创建。它会保留其他页面。但您可以通过设置屏幕页面限制来创建每个页面。

public void setOffscreenPageLimit (int limit)

参考请查看this