参考文章
本文所有图片均来自学习笔记| AS入门(六) 碎片Fragment,这个博主是个大佬,建议关注。
Fragment简介与使用
Fragment是用于解决Android碎片化,可以作为Activity的组成界面。一个Fragment可以让多个Acitvity使用,一个Acitivity也可以使用多个Fragment。
Fragment好处:
模块化(Modularity):我们不必把所有代码全部写在Activity中,而是把代码写在各自的Fragment中。
可重用(Reusability):多个Activity可以重用一个Fragment。
可适配(Adaptability):根据硬件的屏幕尺寸、屏幕方向,能够方便地实现不同的布局,这样用户体验更好。
静态使用
首先写Fragment的布局文件,之后写一个Fragment类,实现onCreatView方法并传入布局文件,最后在Activity的layout文件中被使用。
动态使用
Fragment允许Activity动态使用。我们可以动态的更换或添加Fragment进入一个容器(layout)。这里先写一个LinearLayout作为存放Fragment的容器。
之后在Activity中:
(1)创建一个Fragment实例;
(2)通过getFragmentManager()获取FragmentManager对象;
(3)开启一个事务(FragmentTrasnsaction),通过beginTransaction()方法
(4)使用add方法将父容器的id与Fragment实例传入,
(5)使用addToBackStack()方法,允许用户点击回退按键会回到前一个Fragment
(6)最后使用commit方法提交。
Fragment与Activity通信
我们可以通过使用FragmentManager的findFragmentById() 方法来获取Fragment的实例,这样就可以使用Fragment的方法。
同样的,我们在Fragment中想要获取Acitivity的实例可以通过getActivity方法。当Fragment中想要使用Context对象时,也可以直接使用getActivity,因为Activity就是一个Context对象。
生命周期
生命周期过程
(1)onAttach:Fragment与Activity建立连接时调用;
(2)onCreate
(3)onCreateView:加载Fragment的布局文件;
(4)onActivityCreated:所连接的Activity调用onCreate后调用;
(5)onStart
(6)onResume
(7)onStop
(8)onDestoryView:删除Fragment的布局文件时调用;
(9)onDestory
(10)onDetach:Fragment与Acitivity取消连接时调用;
Fragment与Activity生命周期的区别
除了Fragment与Acitivity有一些不同的方法外,Fragment是依附于Activity。Fragment的各种生命周期方法是由依附的Activity中的FragmentManger调用的,而Activity的生命周期方法是由操作系统调用的。Fragment中的生命周期方法都是public,而Activity中的是protected,也说明了Fragment的生命周期方法需要Activity调用。