用viewPager实现滑屏功能
一、ViewPager是一个Fragment容器;FragmentManager要求任何用作Fragment容器的视图必须要有资源ID。
二、自定义资源(values/ids.xml)
<resources>
<item type="id" name="viewPager"/>
</resources>
三、在Activity中把viewPager设置为内容视图
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mViewPager=new ViewPager(this);
mViewPager.setId(R.id.viewPager);
this.setContentView(this.mViewPager);
}
四、为ViewPager对象设置适配器
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mViewPager=newViewPager(this);
mViewPager.setId(R.id.viewPager);
this.setContentView(this.mViewPager);
this.mCrimes= CrimeLab.get(this).getCrimes();
FragmentManager manager=this.getSupportFragmentManager();
this.mViewPager.setAdapter(new FragmentStatePagerAdapter(manager) {
@Override
publicFragment getItem(intposition) {
Crime crime=CrimePagerActivity.this.mCrimes.get(position);
return CrimeFragment.newCrimeFragment(crime.getmId());
}
@Override
public int getCount() {
return CrimePagerActivity.this.mCrimes.size();
}
});
}
五、FragmentStatePagerAdapter与FragmentPagerAdapter
区别:在卸载不需要的Fragment时,二者处理的方式不一样。FragmentStatePagerAdapter会销毁不需要的Fragment,事务提交后,会将Fragment从Activity的FragmentManager中删除。
FragmentPagerAdapter只会删除Fragment视图,而Fragment实例保留在FragmentManager中。
通常来说,FragmentStatePagerAdapter更节省内存。