fragment中的replace和hide与shou方法的区别

在我们使用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;


    }

 

posted @ 2017-08-22 15:41  anthonyJ  阅读(1385)  评论(0)    收藏  举报