主要用于个人复习(基于第一行代码)
Fragment同样能包含布局,同样都有自己的生命周期
要创建一个Fragment,必须创建一个Fragment子类,或者继承自另一个已存在的Fragment的子类
在一个Activity中添加两个Fragment
左侧:

右侧:

创建LeftFragment类继承Fragment

再创建一个RightFragment类

修改布局文件:

android:name 来显式声明添加Fragment类名
注意:Fragment不用在配置文件中创建
动态添加Fragment(重点)
再新建一个布局文件:


新建一个AnotherRightFragment类:

在主布局文件中修改:

修改MainActivity中的代码:

动态添加Fragment分5步:

一个Fragment必须被嵌入到一个Activity中,它的生命周期直接受其所属的宿主Activity的生命周期的影响
在Fragment中实现返回栈
按下Back就可以回到上一个Fragment

addtoBackStack()它可以接受一个名字用于返回栈的状态,一般传入null,按下Back键返回上一个Frame
Activity中调用Fragment或Fragment中调用Activity,怎么实现?


Fragment的生命周期
1、运行状态
2、暂停状态
3、停止状态
4、销毁状态
onAttach():当Fragment和Activity建立关联时调用
onCreateView():为Fragment创建视图(加载布局)时调用
onActivityCreated():确保与Fragment相关联的Activity已经创建完毕时调用
onDestoryView():当与Fragment关联的视图被移除时调用
onDetach():当Fragment和Activity解除关联时调用

动态加载布局的技巧
使用限定符(qualifier):运行时判断程序应该时使用双页模式还是单页模式
在layout文件中创建布局:(小屏转换)

再添加一个layout—large文件夹创建布局:(large是一个限定符——>大屏转换)

Android的一些限定符


使用最小宽度限定符:允许我们对屏幕的宽度指定一个最小值,然后以最小值为临界点,屏幕宽度大于这个值的设备就加载一个布局,屏幕宽度小于这个值的设备就加载另一个布局。
再res目录下新建layout-sw600dp文件夹,新建布局:

网友评论