是否可以多次在viewpager中使用一个片段?我正在尝试使用ViewPager构建动态更新的UI。 我想使用相同的设计,基本上相同的片段,每个页面都有不同的数据,如listview适配器。
答案 0 :(得分:4)
您可以为ViewPager中的每个页面实例化相同的Fragment类,传递ViewPager的位置以控制要显示的内容。这样的事情:
public class MyFragment extends Fragment {
private int mIndex;
public MyFragment(int index) {
mIndex = index;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
switch(mIndex){
case 0:
// do you things..
case 1:
// etcetera
}
}
}
然后,在你的FragmentPagerAdapter:
public static class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return NUM_ITEMS;
}
@Override
public Fragment getItem(int position) {
return new MyFragment(position);
}
}
这样,您可以重用大部分代码,只更改switch / case语句中的内容。
答案 1 :(得分:3)
您误解了class
与object of class
的概念。您的MyFragment.java
源代码定义了class
,每当您使用new
运算符(new MyFragment();
)实例化时,您就会变成“生物” - 这个创建object
,这是instance
的{{1}}。除非你故意阻止这种情况(通过使用Singleton模式),你可以根据需要制作尽可能多class
instances
的{{1}},同样允许你使用单一食谱制作尽可能多的蛋糕。这也适用于碎片。
因此,只要您为每个页面创建{strong>单独 class
(又称object
)instance
,您应该能够做到想。