/**
* FragmentPagerAdapter和FragmentStatePagerAdapter最大的区别就是instantiateItem和 destroyItem实现不一样,如果都重写了2者的效果就基本一样了
* 重写instantiateItem ,destroyItem 滑动切换 Fragment数据保存状态
*/
public class MyFragmentPagerAdapter extends FragmentPagerAdapter {
//public class MyFragmentPagerAdapter extends FragmentStatePagerAdapter{
private List<Pair<String, Fragment>> mFragmentPair;
private FragmentManager mFragmentManager;
public MyFragmentPagerAdapter(FragmentManager fm, List<Pair<String, Fragment>> mFragmentPair) {
super(fm);
this.mFragmentManager = fm;
this.mFragmentPair = mFragmentPair;
}
@Override
public Fragment getItem(int position) {
return mFragmentPair.get(position).second;
}
@Override
public int getCount() {
return mFragmentPair.size();
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentPair.get(position).first;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Fragment fragment = (Fragment) super.instantiateItem(container, position);
mFragmentManager.beginTransaction().show(fragment).commitAllowingStateLoss();
//###return super.instantiateItem(container, position);
return fragment;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
//###super.destroyItem(container, position, object);
Fragment fragment = mFragmentPair.get(position).second;
mFragmentManager.beginTransaction().hide(fragment).commitAllowingStateLoss();
}
}
Android 总结 ViewPager 中 Fragment 滑动切换、数据保存
自定义FragmentPagerAdapter实现数据保存与销毁
最新推荐文章于 2021-05-29 07:44:17 发布
本文探讨了FragmentPagerAdapter和FragmentStatePagerAdapter在处理Fragment实例时的区别,并展示了如何通过重写instantiateItem和destroyItem来实现滑动切换时Fragment的数据保存和状态管理。通过对这两个方法的定制,可以在切换Fragment时保持数据的状态,同时有效地管理内存。
1648

被折叠的 条评论
为什么被折叠?



