天天看点

Fragment基础知识整理

 今天主要为大家讲解一下Fragment,因为每一个项目中都会用到Fragment,还记得自己在几年前用过TabActivity来实现导航切换,那阵根本就不知道Fragment,当知道Fragment时,Tabactivity就可以被OUT了;

   如果哪里有不足的地方,还希望大神宝宝们多多提点:
Fragment基础知识整理

什么是Fragment?

  Fragment 碎片的意思。它在一个activity里面表示一个行为或者用户接口的一部分,它是轻量级和灵活的,

我们可以将不同的Fragments组合起来放到一个activity中,或者在不同的activity中重用一个Fragment,你可以看成它是activity中的一个

片段,有着自己的生命周期,并且可以再activity运行是动态的添加和删除。

   Fragment的生命周期

Fragment基础知识整理

Fragment的生命周期方法主要有onAttach().onCreate(),onCreateView()onActivityCreated(); onStart(),onResume(),onPause(),onStop(),onDestoryView(),onDestory(),onDetach()等11个方法

1.切换该Fragment,分别执行onAttach()onCreateView()onCreate(),onActivityCreated() onstart()onRsume() 2.锁屏:分别执行onPause()onStop() 3.亮屏:分别执行onStart()onResume() 4,覆盖切换到其他Fragment,分别执行onPause(),onstop(),ondestoryView() 5,从其他Fragment回到之前Fragment,分别执行onCreateView(),onActivityCreated(),onStart(), onResume()方法

Fragment常用的API

Fragment常用的三个类 Android.app.Fragment 主要用于定义Fragment android.app.FragmentMananger 主要用于在activity中操作Fragment android.app.FragmentTransaction 保证一系列Fragment操作的原子性,熟悉事务的都应该明白

Fragment基础知识整理

Fragment使用时常用的方法

add(): 向activity中添加一个Fragment

remove();从activity中移除一个Fragment,如果被移除的Fragment没有被添加到回退栈

replace();使用另一个Fragment代替当前的

hide();隐藏当前的Fragment,仅仅是设为不可见,并不会销毁

show();显示之前隐藏的Fragment

detach(); 会将view从UI中移除,此时Fragment的状态依然由FragmentMananger维护

attch(); 重建View视图,附加到UI上并显示

Fragment在你们项目中的使用

Fragment是android3.0以后引入的概念,做局部内容更新更方便,原来为了达到这一点要求把多个布局放到activity里面,现在可以用多个Fragment来代替,只有在需要的时候才加载Fragment,提高性能 1,Fragment 可以使你能够将activity分离成多个重用的组件,每个都有他自己的生命周期和ui; 2.Fragment 可以轻松创建动态灵活的UI设计,可以适用于不同的屏幕尺寸,从手机到平板电脑 3.fragment是一个独立模块,紧紧的与activty绑定在一起,可以运行中动态的移除,加入,交换等。 4,fragment提供一个新的方式让你在不同的android设备上统你的UI. 5.fragment解决activity切换不流畅,轻量切换 6.fragment代替TabActivity做导航,性能好 7.fragemt 在4.2版本中新增嵌套fragment使用方法,能够生成更好的界面效果

如何切换fragement,不重新实例化

翻看了android官方文档,和一些组件的源代码,发现repalce()这个方法只是在一个Fragment不再需要时采用的简单方法 正确的切换方式是add(),切换是hide(),add()另一个Fragment;再次切换时;只需要hide()当前,show()另一个, 这样就能做到多个Fragment切换不重新实例化;

Fragment的replace 和 add方法的区别

Fragment 本身没有replace 和add方法,FragmentManager才有replace和add方法。我们经常使用的一个架构就是通过RadioGroup切换Fragment,每个Fragment就是一个功能模块, Fragment 的容器一个FrameLayout,add的时候是把所有的Fragment一层一层的叠加到了FrameLayout上了,而replace的话首先将该容器中的其他Fragment去除掉然后将当前的Fragment添加到容器上, 一个Fragment容器中只能添加一个Fragment种类,如果多次添加则会报异常,导致程序终止,而Replace则我无所谓,随便切换,因为通过add的方法添加的Fragment,每个Fragment只能添加一次,一次如果要想达到切换效果需要通过Fragment的hide和show方法结合使用,将要显示的show出来,讲其他hide起来,这个过程的fragment的生命周期没有变化, 通过replace切换Fragment,每次都会执行上一个Fragment的onDestroyView,新Fragment的onCreateView,onStart, onResume方法,基于以上不同的特点我们在使用的一定要结合这生命周期操作我们的视图和数据

Fragment优点

Fragment可以使你能够将activity分离成多个可重用的组件

Fragment可以轻松的创建动态灵活的UI设计,

Fragment是一个独立的模块,紧紧的与activity绑定在一起。

Fragment提供一个新的方式让你在不同的andoid设备上同一你的UI

Fragment解决activity之间的切换不流畅,轻量切换

Fragment代替TabActivity做导航,性能好

Fragment做局部内容更新更方便

今天Fragment我总结就这么多;希望能够对大家有所帮助,

IT的世界,大神们都在前面跑,你还有什么理由走那,

F

继续阅读