使用replace每次都要创建一个fragment去替换到布局里面去,每次都要把fragment里面的代码都走一遍,如果是有很多数据的网络请求,每次都要去请求一遍,很耗时间和流量,解决的办法就是用fragment的显示与隐藏
//设置Fragment
private void setFragment(int dex) {
//开启一个事务
FragmentTransaction beginTransaction = getSupportFragmentManager().beginTransaction();
if (homeFragment != null) {
beginTransaction.hide(homeFragment);
}
if (typeFragment != null) {
beginTransaction.hide(typeFragment);
}
if (findFragment != null) {
beginTransaction.hide(findFragment);
}
if (shopFragment != null) {
beginTransaction.hide(shopFragment);
}
if (myFragment != null) {
beginTransaction.hide(myFragment);
}
switch (dex) {
case 0:
if (homeFragment == null) {
homeFragment = new HomeFragment();
//加入事物
beginTransaction.add(R.id.frame, homeFragment);
} else {
//否则就显示
beginTransaction.show(homeFragment);
}
break;
case 1:
if (typeFragment == null) {
typeFragment = new TypeFragment();
//加入事物
beginTransaction.add(R.id.frame, typeFragment);
} else {
//否则就显示
beginTransaction.show(typeFragment);
}
break;
case 2:
if (findFragment == null) {
findFragment = new FindFragment();
//加入事物
beginTransaction.add(R.id.frame, findFragment);
} else {
//否则就显示
beginTransaction.show(findFragment);
}
break;
case 3:
if (shopFragment == null) {
shopFragment = new ShopFragment();
//加入事物
beginTransaction.add(R.id.frame, shopFragment);
} else {
//否则就显示
beginTransaction.show(shopFragment);
}
break;
case 4:
if (myFragment == null) {
myFragment = new MyFragment();
//加入事物
beginTransaction.add(R.id.frame, myFragment);
} else {
//否则就显示
beginTransaction.show(myFragment);
}
break;
}
//执行
beginTransaction.commit();
}