有两种实现方式,一种是 fragmentActivity + FragmentPagerAdapter (Fragment,FragmentManager须要导包:android.support.v4.app.)java
另外一种是 Activity + PagerAdapter(Fragment,FragmentManager须要导包:android.app.)android
1. fragmentActivity + FragmentPagerAdapterapp
自定义FragmentPagerAdapter只须要重写: getItem(),getCount() 方法ide
2. Activity + PagerAdapterspa
自定义的 PagerAdapter 须要重写如下方法:code
instantiateItem(ViewGroup, int)
destroyItem(ViewGroup, int, Object) //记得删除 super.destroyItem(container, position, object);不然报异常:UnsupportedOperationException,缘由查看源码
getCount()
isViewFromObject(View, Object)
须要添加 Title 时还须要重写 getPageTitle() 方法blog
重写 :instantiateItem(ViewGroup, int)get
@Override public Object instantiateItem(ViewGroup container, int position) { Fragment fragment = mList.get(position); if (!fragment.isAdded()) { FragmentTransaction saction = mFragManager.beginTransaction(); saction.add(fragment, fragment.getClass().getSimpleName()); //只有commit才会执行 saction.commit(); //executePendingTransactions--当即执行 mFragManager.executePendingTransactions(); } View view = fragment.getView(); container.addView(view); return view; }
重写 :isViewFromObject(View, Object)源码
@Override public boolean isViewFromObject(View view, Object object) { return view == object; }
注意:自定义Fragemt 时,必须重写 onCreateView() 方法it
使用FragmentTransaction,移除fragment时须要addtobackstack()不然没法回退(fragement 在移除时被销毁)