第四章主要介绍了碎片(Fragment)的概念和相关用法。
因为存在很多尺寸的移动设备,比如手机和平板电脑,屏幕大小的差距过大可能会让同样的界面在视觉效果上有较大差异。这里引入碎片的概念,可以同时兼顾手机和平板的开发。
碎片是一种可以嵌入在活动当中的UI片段,有自己的生命周期,可以理解成一个迷你型的活动。
可以自定义一个碎片类继承自Fragment,重写其中的onCreateView方法,在这个方法中通过LayoutInflater的inflate()方法动态地加载自定义的布局,即简单实现了一个自定义的碎片类。再在布局中使用<fragment>标签在布局中添加碎片,用android:name属性显式指定要添加的碎片类名即可。
动态添加碎片的步骤为:1.创建待添加的碎片实例;2.获取到FragmentManager,在活动中直接调用getFragmentManager()方法得到;3.开启一个事务,通过调用beginTransaction()方法开启;4.向容器内添加碎片,一般使用replace()方法来实现,需要传入容器的id和待添加的碎片实例。5.提交事务,调用commit()方法来完成。
FragmentTransaction提供了一个addToBackStack()方法,可以用于将一个事务添加到返回栈中。在事务提交前调用addToBackStack()方法,可以接受一个名字用于描述返回栈的状态,一般传入null即可。此时按下Back键,即可回到上一个碎片,程序不会直接退出。
在活动中调用碎片的方法是通过FragmentManager的findFragmentById()方法从布局文件中获取碎片的实例,之后即可调用碎片里的方法。示例代码如下:RightFragment ri