为什么要使用碎片Fragment
碎片的出现是为了能使一套布局适应在不同大小尺寸的Android设备上,我们可以将Fragment理解为Activity上的一个个的碎片组成部分。
Fragment拥有自己的生命周期,并且可以接收、处理用户的事件。而且我们还可以在程序运行时动态的添加、替换和移除某个Fragment。
创建与使用Fragment
首先需要在一个activity中设置一个布局作为主容器
在activity中使用FragmentManager来管理fragment,在管理器中使用beginTransaction()来开启事务,通过add()来添加具体事务(添加fragment),通过commit()来提交事务。
在按钮事件中,使用FragmentManager中的replace()方法可以在容器中替换碎片
这种情况下,我们的Fragment与Activity共用返回栈,在fragment中返回将直接退出应用,需要使用使用fragment模拟activity的返回栈,需要用到FragmentManager的方法addToBackStack(null),这样在被激活的另一个Fragment中按下返回将会回到上一个这个Fragement
有时我们需要使用后退按钮来退回到上一个Fragment,可以通过FragmentManager的popBackStack()方法手动返回
Fragment的生命周期
如图所示是Fragment的生命周期,其中有很多函数,但是我们常用的有三个
onCreate()、onCreateView()、onPause()
演示如下(转自此处):
场景演示 : 切换到该Fragment
11-29 14:26:35.095: D/AppListFragment(7649): onAttach
11-29 14:26:35.095: D/AppListFragment(7649): onCreate
11-29 14:26:35.095: D/AppListFragment(7649): onCreateView
11-29 14:26:35.100: D/AppListFragment(7649): onActivityCreated
11-29 14:26:35.120: D/AppListFragment(7649): onStart
11-29 14:26:35.120: D/AppListFragment(7649): onResume
屏幕灭掉:
11-29 14:27:35.185: D/AppListFragment(7649): onPause
11-29 14:27:35.205: D/AppListFragment(7649): onSaveInstanceState
11-29 14:27:35.205: D/AppListFragment(7649): onStop
屏幕解锁
11-29 14:33:13.240: D/AppListFragment(7649): onStart
11-29 14:33:13.275: D/AppListFragment(7649): onResume
切换到其他Fragment:
11-29 14:33:33.655: D/AppListFragment(7649): onPause
11-29 14:33:33.655: D/AppListFragment(7649): onStop
11-29 14:33:33.660: D/AppListFragment(7649): onDestroyView
切换回本身的Fragment:
11-29 14:33:55.820: D/AppListFragment(7649): onCreateView
11-29 14:33:55.825: D/AppListFragment(7649): onActivityCreated
11-29 14:33:55.825: D/AppListFragment(7649): onStart
11-29 14:33:55.825: D/AppListFragment(7649): onResume
回到桌面
11-29 14:34:26.590: D/AppListFragment(7649): onPause
11-29 14:34:26.880: D/AppListFragment(7649): onSaveInstanceState
11-29 14:34:26.880: D/AppListFragment(7649): onStop
回到应用
11-29 14:36:51.940: D/AppListFragment(7649): onStart
11-29 14:36:51.940: D/AppListFragment(7649): onResume
退出应用
11-29 14:37:03.020: D/AppListFragment(7649): onPause
11-29 14:37:03.155: D/AppListFragment(7649): onStop
11-29 14:37:03.155: D/AppListFragment(7649): onDestroyView
11-29 14:37:03.165: D/AppListFragment(7649): onDestroy
11-29 14:37:03.165: D/AppListFragment(7649): onDetach