【Android基础知识】FragmentPagerAdapter和FragmentStatePagerAdapter

FragmentPagerAdapter 会一次性加载所有的Fragment到内存,不会再去创建和销毁。

MyFragmentPagerAdapter.java

/**
 * FragmentPagerAdapter一次性加载所有Fragment,不会去销毁Fragment
 * @author meng.li
 *
 */
public class MyFragmentPagerAdapter extends FragmentPagerAdapter{
	private List<Fragment> fragLists;
	private List<String> titelList;
	public MyFragmentPagerAdapter(FragmentManager fm,List<Fragment> fragLists,List<String> titelList) {
		super(fm);
		this.fragLists = fragLists;
		this.titelList = titelList;
	}
	@Override
	public Fragment getItem(int arg0) {
		// TODO Auto-generated method stub
		return fragLists.get(arg0);
	}
	@Override
	public CharSequence getPageTitle(int position) {
		// TODO Auto-generated method stub
		return titelList.get(position);
	}
	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return fragLists.size();
	}
}
MyActivity.java

/*
 * 继承FragmentActivity 是为了兼容Android3.0 以前的也可以使用Fragment
 */
public class MyActivity extends FragmentActivity implements OnPageChangeListener{
	private ViewPager viewPager;
	private PagerTabStrip tab;
	private List<Fragment> fragLists;
	//标题
	private List<String> titleList;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.view_pager);
        titleList = new ArrayList<String>();
        
        titleList.add("第一页");
        titleList.add("第二页");
        titleList.add("第三页");
        titleList.add("第四页");
        
        viewPager = (ViewPager)findViewById(R.id.pager);
        tab = (PagerTabStrip)findViewById(R.id.tab);
        //为PagerTabStrip设置一些属性
        tab.setBackgroundColor(Color.YELLOW);
        tab.setTextColor(Color.RED);
        tab.setDrawFullUnderline(false);
        tab.setTabIndicatorColor(Color.GREEN);
        
        /**
         * 通过fragment作为ViewPager的数据源
         */
        fragLists = new ArrayList<Fragment>();
        fragLists.add(new Fragment1());
        fragLists.add(new Fragment2());
        fragLists.add(new Fragment3());
        fragLists.add(new Fragment4());
        //创建PagerAdapter的适配器,
        MyFragmentPagerAdapter adapter = new MyFragmentPagerAdapter(getSupportFragmentManager(), fragLists, titleList);
        viewPager.setAdapter(adapter);
        viewPager.setOnPageChangeListener(this);
    }
	@Override
	public void onPageScrollStateChanged(int arg0) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void onPageScrolled(int arg0, float arg1, int arg2) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void onPageSelected(int arg0) {
		// TODO Auto-generated method stub
		Toast.makeText(this, "当前是第"+arg0+"个页面", Toast.LENGTH_SHORT).show();
	}
}
FragmentStatePagerAdapter 会进行Fragment的创建和销毁

MyFragmentStatePagerAdapter.java

public class MyFragmentStatePagerAdapter extends FragmentStatePagerAdapter{
	private List<Fragment> fragLists;
	private List<String> titelList;
	public MyFragmentStatePagerAdapter(FragmentManager fm,List<Fragment> fragLists,List<String> titelList) {
		super(fm);
		this.fragLists = fragLists;
		this.titelList = titelList;
	}
	@Override
	public Fragment getItem(int arg0) {
		// TODO Auto-generated method stub
		return fragLists.get(arg0);
	}
	@Override
	public CharSequence getPageTitle(int position) {
		// TODO Auto-generated method stub
		return titelList.get(position);
	}
	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return fragLists.size();
	}
	@Override
	public Object instantiateItem(ViewGroup arg0, int arg1) {
		// TODO Auto-generated method stub
		return super.instantiateItem(arg0, arg1);
	}
	@Override
	public void destroyItem(ViewGroup container, int position, Object object) {
		// TODO Auto-generated method stub
		super.destroyItem(container, position, object);
	}
}
创建方法

MyFragmentStatePagerAdapter adapter = new MyFragmentStatePagerAdapter(getSupportFragmentManager(), fragLists, titleList);
viewPager.setAdapter(adapter);





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值