使用步骤
- 1、Activity的布局文件
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" >
</android.support.v4.view.ViewPager>
- 2、加载要显示的Fragment,这里要注意,导入的全部是
android.support.v4.app.Fragment,也就是v4兼容包下的Fragment类,至于为什么,看步骤3
Fragment1 f1 = new Fragment1();
Fragment2 f2 = new Fragment2();
Fragment3 f3 = new Fragment3();
fragmentContainter = new ArrayList<Fragment>();
fragmentContainter.add(f1);
fragmentContainter.add(f2);
fragmentContainter.add(f3);
- 3、用FragmentPagerAdapter关联上面的Fragment和ViewPager,
FragmentPagerAdapter (android.support.v4.app.FragmentPagerAdapter)
继承自 PagerAdapter。相比通用的 PagerAdapter,该类更专注于每一页均为 Fragment 的情况。我们只需要实现 getCount() 和 getItem()即可,从getItem()可以看出,它返回的是v4的Fragment,所以2中的问题答案就在这里了~~
pager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager())
{
@Override
public int getCount()
{
return fragmentContainter.size();
}
@Override
public android.support.v4.app.Fragment getItem(int arg0)
{
return fragmentContainter.get(arg0);
}
});
这样就可以实现滑动Fragment
重要的话
PageAdapter 是 FragmentPagerAdapter 以及 FragmentStatePagerAdapter 的基类,可以将上面的替换成FragmentStatePagerAdapter 。
FragmentStatePagerAdapter 和 FragmentPagerAdapter 的区别: FragmentPagerAdapter使用时,每一个生成的 Fragment 都将保存在内存之中,而 FragmentStatePagerAdapter 只保留了当前显示的Fragment,其他划过的Fragment离开视线后,就会被销毁;而在页面需要显示时,再生成新的实例(可以通过打印Fragment的生命周期来查看,这里就不粘贴了)。这么实现的好处就是当拥有大量的页面时,不必在内存中占用大量的内存。