我正在玩Android的标准有效导航示例,其中显示了如何创建可滑动的视图
可以从以下页面下载代码: http://developer.android.com/training/implementing-navigation/lateral.html
在getView()方法中,创建一个新片段。这不是一个坏习惯,不会导致内存泄漏。
public Fragment getItem(int i) {
switch (i) {
case 0:
// The first section of the app is the most interesting -- it offers
// a launchpad into the other demonstrations in this example application.
return new LaunchpadSectionFragment();
default:
// The other sections of the app are dummy placeholders.
Fragment fragment = new DummySectionFragment();
Bundle args = new Bundle();
args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, i + 1);
fragment.setArguments(args);
return fragment;
}
}
答案 0 :(得分:1)
如果您仔细阅读Viewpager文档,它会为其提供两个适配器 内容:
来自Android Developer Docs
<强> FragmentPagerAdapter:强>
当有一些通常更多的静态片段被分页时,这个版本的寻呼机最适合使用,例如一组标签。用户访问的每个页面的片段将保留在内存中,但其视图层次结构可能在不可见时被销毁。这可能导致使用大量内存,因为片段实例可以保持任意数量的状态。
<强> FragmentStatePagerAdapter 强>
当存在大量页面时,此版本的寻呼机更有用,更像列表视图。当页面对用户不可见时,它们的整个片段可能会被破坏,只保留该片段的保存状态。与FragmentPagerAdapter相比,这允许寻呼机保持与每个被访问页面相关联的更少内存,代价是在页面之间切换时可能产生更多开销。
如您所见,您可以根据您的要求实施adadpter,如果有大量数据,您可以实现FragmentStatePagerAdapter,它负责片段的生命周期。
如果您不想动态创建Fragments,可以在构造函数中实例化单个片段,并使用不同的数据将其返回到getview
myFragment.setArguments(Bundle Instance);