在ViewPager中多次使用一个片段

时间:2012-11-17 15:17:47

标签: android dynamic android-viewpager fragment

是否可以多次在viewpager中使用一个片段?我正在尝试使用ViewPager构建动态更新的UI。 我想使用相同的设计,基本上相同的片段,每个页面都有不同的数据,如listview适配器。

2 个答案:

答案 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)

您误解了classobject of class的概念。您的MyFragment.java源代码定义了class,每当您使用new运算符(new MyFragment();实例化时,您就会变成“生物” - 这个创建object,这是instance的{​​{1}}。除非你故意阻止这种情况(通过使用Singleton模式),你可以根据需要制作尽可能多class instances的{​​{1}},同样允许你使用单一食谱制作尽可能多的蛋糕。这也适用于碎片。

因此,只要您为每个页面创建{strong>单独 class(又称objectinstance,您应该能够做到想。