發(fā)現(xiàn)Index中使用radiobutton+Fragment并不是想象中的用Fragment的replace實(shí)現(xiàn)切換魂务。這樣的確會(huì)造成切換的時(shí)候重新初始化加載網(wǎng)絡(luò)數(shù)據(jù)啥的刊懈。特別是Fragment里面的數(shù)據(jù)很復(fù)雜的時(shí)候。而是這樣:
? ?Fragmentfragment = (Fragment)mFragmentPagerAdapter
.instantiateItem(mContainer, R.id.rb_microstore);
mFragmentPagerAdapter.setPrimaryItem(mContainer,0, fragment);
mFragmentPagerAdapter.finishUpdate(mContainer);
privateFragmentPagerAdaptermFragmentPag
erAdapter=newFragmentPagerAdapter(
getSupportFragmentManager()) {
@Override
public voidsetPrimaryItem(ViewGroup container,intposition, Object object) {
currentPosition= position;
super.setPrimaryItem(container, position, object);
}
@Override
publicFragment getItem(intposition) {
switch(position) {
caseR.id.rb_discover:
return newDiscoverFrag();
caseR.id.rb_circle:
return newCircleFrag();
caseR.id.rb_myinfo:
return newPersonalCenterFrag();
caseR.id.rb_microstore:
default:
return newMicroStoreFrag();
}
}
@Override
public intgetCount() {
return4;
}
};
實(shí)現(xiàn)checkchangeListener
@Override
public voidonCheckedChanged(CompoundButton buttonView,booleanisChecked) {
if(isChecked) {
Fragment fragment = (Fragment)mFragmentPagerAdapter
.instantiateItem(mContainer, buttonView.getId());
mFragmentPagerAdapter.setPrimaryItem(mContainer,0, fragment);
mFragmentPagerAdapter.finishUpdate(mContainer);
}
}
這樣不會(huì)多次創(chuàng)建各種Fragment擎宝。也會(huì)很流暢束析。這樣需要在Fragment中重寫
@Override
public voidsetMenuVisibility(booleanmenuVisible) {
super.setMenuVisibility(menuVisible);
if(this.getView() !=null)
this.getView().setVisibility(menuVisible ? View.VISIBLE: View.GONE);
}
否則會(huì)導(dǎo)致重影申尤。哈哈滚粟。今天就遇到了