分类: Android平台
2017-12-28 14:09:32
引言:在Android开发中,我们都知道一些界面的展示经常会用到的就是Activity,但是Activity存在着很大的局限性,比如说手机上的界面显示在平板上面就会发生各种变形的问题,Activity也无法实现局部的数据刷新,所以Android3.0之后出来了Fragment,Fragment通常是嵌套在Activity中来使用,提高了界面显示的灵活性。
Fragment也被称作碎片,它相当于一个小型的Activity,您可以将碎片视为 Activity 的模块化组成部分,它具有自己的生命周期,能接收自己的输入事件,并且可以在 Activity 运行时添加或删除片段。同时碎片必须始终嵌入在Activity 中,其生命周期直接受宿主 Activity 生命周期的影响。
1.用一套代码适配横竖屏和平板
假设有两个界面,在手机竖屏和平板竖屏的时候是分为两个Activity来实现的,而在手机横屏和平板横屏的时候在同一个Activity中显示两个界面,这个时候用Activity就不好实现,我们采用碎片Fragment来进行实现;
(1).分别在Layout与Layout-land下面创建一个名字相同的Fragment布局文件.这样做的原因是显示的过程中系统会根据横竖屏而去加载不同的布局来达到适配的效果;
(2)创建两个Fragment
(3).创建一个接口回调来实现两个Fragment之间的通信;
(4).当点击第一个Fragment上需要在第二个Fragment作出对应的响应的时候,通过判断横竖屏来进行显示
在竖屏的情况下只显示一个Fragment,横屏两个Fragment都会显示
FragmentTabHost作为Android4.0版本的控件, 已经被项目广泛使用, 5.0版本又推出TabLayout+ViewPager显示多页;
1.Fragment与FragmentTabHost的组合使用的两种常用方式
(1).菜单栏在上方的实现方式
(2).菜单栏在底部的实现方式
(3).添加对应的Fragment到对应的TabHost中
2.如何通过修改FragmentTabhost源码来避免对应的Fragment重新绑定
如果使用原生的类在切换Tabhost对应的Fragment的时候都会触发重新绑定Fragment,但是在实际的项目应用过程中我们并不希望重新绑定导致Fragment重新加载,所以需要修改源码中影响Fragment生命周期的代码,在其doTabChanged()方法中做如下修改即可:
本文涉及到了Fragment的使用以及Fragment和Fragment Tabhost的主要使用场景及在使用过程中遇到问题的解决方式,相信做Android开发的朋友都知道,这两者的组合在很多APP中是很常用的,在用的过程中可能也会遇到一些奇怪的现象,比如说在切换底部菜单栏的时候会导致对应的Fragment重新加载,这里就告诉大家如何去修改对应的源码来实现避免切换的时候重新加载数据;