是否可以多次在viewpager中使用一个片段?我正在尝试使用ViewPager构建动态更新的UI。 我想要使用相同的设计,基本上每个页面具有不同数据的相同片段,如列表视图适配器。多次在ViewPager中使用一个片段
回答
您可以为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);
}
}
这样,你可以重用大部分代码只改变你的开关/ case语句所需要的。
但你不能创建一个片段类的非空构造函数 –
您误解了class
与object of class
的概念。你MyFragment.java
源代码定义class
你变成“活物”每次与new
运营商(new MyFragment();
)实例它的时候 - 这将创建object
这是您的class
的instance
。除非你故意避免这种情况(即使用单身模式),你可以根据自己的喜好制作class
的许多instances
,同样的方法可以制作许多使用单一食谱的蛋糕。这也适用于碎片。
所以只要你创建单独object
(又名说instance
)您class
每个页面,你应该能够做你想做的。
你能否提供一些上述解释的示例..? – Harsha
- 1. 在viewpager中多次使用一个片段
- 2. 在viewpager中用另一个片段替换一个片段
- 3. 同一片段中的多个ViewPager
- 4. 在ViewPager中使用片段
- 5. ViewPager中另一个片段的片段
- 6. 如何使用viewpager一次创建一个片段
- 7. 在ViewPager的每个屏幕中使用多个片段
- 8. 多布局viewpager与一个片段
- 9. 在ViewPager中只加载一个片段
- 10. 使用ViewPager保存一个片段与多个视图
- 11. 在ViewPager中引用片段
- 12. 如何使用ViewPager多次扫描相同的片段?
- 13. 片段中的ViewPager从另一个片段调用Android
- 14. 从另一个片段在viewpager中显示片段
- 15. ViewPager - 在片段页面中创建一个新片段
- 16. 可以SharedPreferences.Editor.commit()在同一个活动/片段中多次使用
- 17. 在片段中使用TabLayout和ViewPager
- 18. 在ViewPager中使用视图或片段
- 19. 如何在片段中使用Viewpager
- 20. ViewPager + FragmentPagerAdapter +每个标签多个片段
- 21. 从ViewPager中删除一个片段
- 22. 在viewpager上显示一个片段
- 23. 如何使用viewpager从tablayout中的另一个片段调用片段
- 24. 使用片段的ViewPager
- 25. 使用viewPager与片段android?
- 26. 使用带片段的ViewPager
- 27. 使用片段与ViewPager
- 28. 替换ViewPager中另一个片段中的片段
- 29. 实现与片段一ViewPager,只有一个页面在ViewPager
- 30. 当父活动中存在多个片段时,一次加载一个片段
AFAIK,这是行不通的。您可以使用'GestureDetector'来监视您现有片段上的滑动。 – CommonsWare
顺便说一句,澄清,我假设你的意思是你想要使用单个片段*实例* - 如果你的意思是你只想使用一个片段* class *,那就很好。 – CommonsWare