Android有效导航示例。 Fragment是多次创建的

时间:2015-05-04 07:25:25

标签: android android-fragments android-actionbar android-viewpager

我正在玩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;
    }
}

1 个答案:

答案 0 :(得分:1)

如果您仔细阅读Viewpager文档,它会为其提供两个适配器 内容:

来自Android Developer Docs

<强> FragmentPagerAdapter:

  

当有一些通常更多的静态片段被分页时,这个版本的寻呼机最适合使用,例如一组标签。用户访问的每个页面的片段将保留在内存中,但其视图层次结构可能在不可见时被销毁。这可能导致使用大量内存,因为片段实例可以保持任意数量的状态。

<强> FragmentStatePagerAdapter

  

当存在大量页面时,此版本的寻呼机更有用,更像列表视图。当页面对用户不可见时,它们的整个片段可能会被破坏,只保留该片段的保存状态。与FragmentPagerAdapter相比,这允许寻呼机保持与每个被访问页面相关联的更少内存,代价是在页面之间切换时可能产生更多开销。

如您所见,您可以根据您的要求实施adadpter,如果有大量数据,您可以实现FragmentStatePagerAdapter,它负责片段的生命周期。

如果您不想动态创建Fragments,可以在构造函数中实例化单个片段,并使用不同的数据将其返回到getview

myFragment.setArguments(Bundle Instance);