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的情况,用户体验也比较好!
新建一个android项目:tabsfragment
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<LinearLayout
android:id="@+id/ll_bottom"
android:layout_width="fill_parent"
android:layout_height="45dp"
android:orientation="horizontal"
android:layout_alignParentBottom="true"
>
<Button
android:id="@+id/btn_square"
android:layout_