Fragment在3.0被引入以后,项目使用fragment越来越多,特别是主界面是底部tab页点击切换更换内容.
现在很多app都采用这种做法,因为这是主界面,能把更多的信息数据展示给用户看,如果是用activity消耗就比较大,而activity是Android的四大组件之一,如果使用fragment,第一方便管理,因为每个单独的业务是和activity分开的,fragment也有自己的生命周期方法.
一般底部tab现在你比较多的做法有三种
一:viewapager+fragment 这种方式有一个不好的地方就是fragment老是会被创建,如果在fragment中初始化网络请求,如果切换过快的话会出现界面闪的情况,这样对用户体验很不好,而且也多次请求网络,比较废用户的流量,而且还要把viewpager的滑动事件给禁止掉,这个倒是简单.
二:就是单纯的采用fragment 因为fragment是有容器管理的,如果切换采用replace方法的话,也有一个大问题就是fragment每次都会被创建,一般频繁切换Fragment会导致频繁的释放和创建,如果Fragment比较臃肿体验就非常不好了,而且会偶现重叠现象.
三:使用fragment的add添加然后判断该fragment是否被添加了 然后已被添加的可以隐藏(hide)让当前的被点击的tab所显示的内容fragment show出来,这种方式比上述二种方法好处在于fragment如果没有被销毁的话只会创建一次,这样我们在切换tab时不会导致重复创建fragment的情况,用户体验也比较好!
下面我们来分析一下
(一)使用replace方法
每次切换Fragment的时候调用方法:
getSupportFragmentManager().beginTransaction().replace(R.id.frame_show_content, displayFragment, "fragment")
.setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
.commitAllowingStateLoss();