6

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

4

2 回答 2

5

您可以为 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 语句中需要的内容。

于 2012-11-17T15:37:06.917 回答
3

您误解了classvs的概念object of class。您的MyFragment.java源代码定义了每次使用operator ( )实例化class时您变成“生物”的东西- 这会创建您的. 除非您故意阻止这种情况(即使用单例模式),否则您可以制作任意数量的蛋糕,同样您可以使用单一配方制作尽可能多的蛋糕。这也适用于片段。newnew MyFragment();objectinstanceclassinstancesclass

因此,只要您为每个页面创建单独 object的(也就是说instance),class您就应该能够做您想做的事。

于 2012-11-17T16:28:45.220 回答