假设我在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);
答案 0 :(得分:1)
是的,每次滑动片段时都会调用onCreteView
解决方案:其中一个解决方案可以使用:
public void setOffscreenPageLimit (int limit) api
将处于空闲状态的视图层次结构中当前页面任一侧应保留的页数设置为空闲状态。超出此限制的页面将在需要时从适配器重新创建。 参考Android Doc
答案 1 :(得分:1)
不,每次向左或向右滑动都不会创建。它会保留其他页面。但您可以通过设置屏幕页面限制来创建每个页面。
public void setOffscreenPageLimit (int limit)
参考请查看this