转载请注明出处 http://blog.csdn.net/qq_31715429/article/details/51013003
本文出自:猴菇先生的博客
不使用replace方法
1.点击模块时首先hide所有fragment:
/**
* 隐藏所有fragment
*/
private void hideAllFragment() {
if (mTrainFragment != null) {
mTransaction.hide(mTrainFragment);
}
if (mFindFragment != null) {
mTransaction.hide(mFindFragment);
}
}
2.然后判断是否为空来add或者show:
@Override
public void onClick(View v) {
mTransaction = mManager.beginTransaction();
hideAllFragment(); //隐藏所有fragment
switch (v.getId()) {
case R.id.train:
selectTab(mTrainIv, mTrainTv);//模块按钮的图片和文字变化
if (mTrainFragment == null) {
mTrainFragment = TrainFragment.getInstance();
mTransaction.add(R.id.fragment_layout, mTrainFragment);
} else {
mTransaction.show(mTrainFragment);
}
break;
case R.id.find:
selectTab(mFindIv, mFindTv);
if (mFindFragment == null) {
mFindFragment = FindFragment.getInstance();
mTransaction.add(R.id.fragment_layout, mFindFragment);
} else {
mTransaction.show(mFindFragment);
}
break;
}
mTransaction.commit();
}
3.fragment使用单例:
private static FindFragment fragment = null;
public static FindFragment getInstance() {
if (fragment == null) {
fragment = new FindFragment();
}
return fragment;
}
4.在fragment的onCreateView方法中判断view是否为空:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (view == null){
view = inflater.inflate(R.layout.fragment_find, container, false);
initView();
}
return view;
}