一、ViewPager是一個(gè)Fragment容器;FragmentManager要求任何用作Fragment容器的視圖必須要有資源ID。
二滔迈、自定義資源(values/ids.xml)
<resources>
<item type="id" name="viewPager"/>
</resources>
三、在Activity中把viewPager設(shè)置為內(nèi)容視圖
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mViewPager=new ViewPager(this);
mViewPager.setId(R.id.viewPager);
this.setContentView(this.mViewPager);
}
四被辑、為ViewPager對象設(shè)置適配器
@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
區(qū)別:在卸載不需要的Fragment時(shí),二者處理的方式不一樣盼理。FragmentStatePagerAdapter會(huì)銷毀不需要的Fragment间涵,事務(wù)提交后,會(huì)將Fragment從Activity的FragmentManager中刪除榜揖。
FragmentPagerAdapter只會(huì)刪除Fragment視圖勾哩,而Fragment實(shí)例保留在FragmentManager中。
通常來說举哟,F(xiàn)ragmentStatePagerAdapter更節(jié)省內(nèi)存思劳。