activity fragment viewpager的总结

来源:互联网 发布:linux 别名 编辑:程序博客网 时间:2024/05/22 10:37

有一段时间对Android使用viewpage和fragment有点混乱 特此整理一下

1、activity 直接包裹fragment

   1)在layout中直接加入
   2)使用Fragmentmanager fm 动态添加
     fm有 add remove replace hide方法对fragment控制
     FragmentTransaction transaction = getFragmentManager().beginTransaction();
     transaction.replace(R.id.fragment_container, newFragment);
     transaction.addToBackStack(null);
     transaction.commit();
          


2、activity中使用viewpager 切换view


   viewpager使用的adapter是继承自pageAdapter
   至少覆盖以下方法
   /**这个方法,return一个对象,这个对象表明了
   PagerAdapter适配器选择哪个对象放在当前的ViewPager中**/
   instantiateItem(ViewGroup, int) 
   /**这个方法,是从ViewGroup中移出当前View**/ 
   destroyItem(ViewGroup, int, Object)
   /**这个方法,是获取当前窗体界面数**/ 
   getCount() 
   /**这个方法,在帮助文档中原文是could be implemented as return view == object,*也就是用于判断是否由对象生成界面**/
   isViewFromObject(View, Object) 
   
   
   
   
3、activity中使用viewpager 切换fragment
    viewpager使用的adapter是继承自FragmentPagerAdapter或FragmentStatePagerAdapter
这两个的区别是FragmentStatePagerAdapter只保留当前页面,当页面离开视线后,就会被消除,释放其资源;在页面需要显示时,生成新的页面
在adapter中使用的data是FragmentList
需要重写的方法比2中的少一点
       @Override  
            public int getCount()  
            {  
                return mFragments.size();  
            }  
  
            @Override  
            public Fragment getItem(int arg0)  
            {  
                return mFragments.get(arg0);  
            }  

存在的问题FragmentPagerAdapter刷新无效果

       解决方案

public Object instantiateItem(ViewGroup container, int position) {
        CarTypeInfoFragment f = (CarTypeInfoFragment)super.instantiateItem(container, position);
        if(!QArrays.isEmpty(mRecList) && position >=0 && position < mRecList.size()){
            CarTypeListMinPriceResult.CarTypeMinPrice p = mRecList.get(position);
            if(p != null){
                f.resetFragmentData(p);
            }
        }
 
        return f;
    }
 
    @Override
     public int getItemPosition(Object object) {
        return POSITION_NONE;

    }


附上几个解决方案

    http://blog.csdn.net/z13759561330/article/details/40737381


    http://www.blog4app.com/?p=62 

0 0