ViewPager+Fragment

来源:互联网 发布:达德网络 编辑:程序博客网 时间:2024/05/17 00:05

这里用了ButterKnife,若没有了解过的可以使用findViewById。页面布局很简单,只有一个简单ViewPager,其余的fragment可以自己去实现。

@BindView(R.id.home_viewpager)    ViewPager homeViewpager;private FragmentPagerAdapter adapter;private List<BaseFragment> fragments;    @Override    protected void init(Bundle savedInstanceState) {        fragments = new ArrayList<>();        fragments.add(FragmentFactory.createFragment(Fragment1.class.getName()));        fragments.add(FragmentFactory.createFragment(Fragment2.class.getName()));        fragments.add(FragmentFactory.createFragment(Fragment3.class.getName()));        adapter = new FragmentPagerAdapter(getSupportFragmentManager()) {            @Override            public Fragment getItem(int position) {                return fragments.get(position);            }            @Override            public int getCount() {                return fragments.size();            }        };        homeViewpager.setAdapter(adapter);    }

这样就完成了viewpager+fragment了。这里通过抽象工厂的方式来实例化fragment,其实也可以直接new一个fragment。
抽象工厂的方法如下。PS:BaseFragment请自行封装。

public class FragmentFactory {    public static <T extends BaseFragment> T createFragment(String className) {        return createFragment(className, null);    }    public static <T extends BaseFragment> T createFragment(String className, Bundle content) {        BaseFragment fragment = null;        try {            fragment = (BaseFragment) Class.forName(className).newInstance();            if (content != null) {                fragment.setArguments(content);            }        } catch (Exception e) {            Log.e("TAG", "创建fragment异常");        }        return (T) fragment;    }}
0 0