viewPager + fragment

有两种实现方式,一种是 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 在移除时被销毁)

相关文章
相关标签/搜索