在我们使用fragment去填充frame的布局的时候,有两个方法可供我们使用,一个是ft.replace(),另一种是使用hide()和shou()方法。这两个方法所产生的效果是有差别的,
使用ft.replace(),如replace字面意思,就是覆盖,就是把当前页面使用你选择的页面去覆盖他,比如从fragmentA—>fragmentB,这样做,会有一个缺点,就是当你从fragmentB返回上个页面fragmentA的时候,fragmentA是被重新create的。也就是说,页面被重新刷新一样(想想,假如fragmentA是类似于淘宝商品的页面,上拉刷新,你找了十几分钟,终于找到喜欢的宝贝了,突然不小心按了购物车,这时候你再点回首页,竟然重新刷新了,这时候你会是什么感觉)当然,根据需求去做就好。
而所谓的hide和shou方法就不一样,他不会去覆盖,和把fragment销毁,只是把它hide(隐藏起来)
下面的代码,就是使用hide和show方法的,这样切换的时候,就不会将上个页面的信息重新加载了
indexFragment =0;
public void switchFragment(int checkIndex) {
ft = fm.beginTransaction();
Fragment currentFragment = fragmentList.get(indexFragment);
Fragment targetFragment = fragmentList.get(checkIndex);
if (currentFragment != targetFragment) {
if (!targetFragment.isAdded()) {
ft.hide(currentFragment).add(
id.my_frame, targetFragment);
} else {
ft.hide(currentFragment).show(targetFragment);
}
} else {
if (!targetFragment.isAdded()) {
ft.add(id.my_frame, targetFragment)
.show(targetFragment);
}
}
ft.commit();
indexFragment = checkIndex;
}