ViewPager + Fragment使用

来源:互联网 发布:百视通下载软件 编辑:程序博客网 时间:2024/05/18 01:28

保持Fragment状态,不要每次都重新onCreateView

instantiateItem (ViewGroup,int) 的返回值只是为了在isViewFromObject里面判断

继承PagerAdapter,代码如下:

public class MainFragmentPagerAdapter extends PagerAdapter{     List<Fragment> fragments=new ArrayList<>();    FragmentManager manager;    public MainFragmentPagerAdapter(FragmentManager manager){        this.manager=manager;    }    public void add(Fragment fragment){        fragments.add(fragment);        notifyDataSetChanged();    }    public void addAll(List<Fragment> fragments){       this.fragments.addAll(fragments);        notifyDataSetChanged();    }    @Override    public int getCount() {        return fragments.size();    }    @Override    public boolean isViewFromObject(View view, Object o) {        return view==((Fragment)o).getView();    }    @Override    public Object instantiateItem(ViewGroup container, int position) {        Fragment fragment=fragments.get(position);        FragmentTransaction transaction=manager.beginTransaction();        if (!fragment.isAdded()){            transaction.add(container.getId(), fragment);        }else{            transaction.show(fragment);        }        transaction.commitAllowingStateLoss();        return fragment;    }    @Override    public void destroyItem(ViewGroup container, int position, Object object) {        Fragment fragment=fragments.get(position);        FragmentTransaction transaction=manager.beginTransaction();        transaction.hide(fragment);        transaction.commitAllowingStateLoss();    }}


0 0
原创粉丝点击