Android开发经验谈程序员Android开发

[03]——认识与简单使用Fragment(碎片)

2016-07-10  本文已影响454人  junerver

为什么要使用碎片Fragment

碎片的出现是为了能使一套布局适应在不同大小尺寸的Android设备上,我们可以将Fragment理解为Activity上的一个个的碎片组成部分。

Fragment拥有自己的生命周期,并且可以接收、处理用户的事件。而且我们还可以在程序运行时动态的添加、替换和移除某个Fragment。

创建与使用Fragment

首先需要在一个activity中设置一个布局作为主容器

在Activity中设置容器

在activity中使用FragmentManager来管理fragment,在管理器中使用beginTransaction()来开启事务,通过add()来添加具体事务(添加fragment),通过commit()来提交事务。

将Activity作为容器,载入一个Fragment

在按钮事件中,使用FragmentManager中的replace()方法可以在容器中替换碎片

替换容器中的碎片Fragment

这种情况下,我们的Fragment与Activity共用返回栈,在fragment中返回将直接退出应用,需要使用使用fragment模拟activity的返回栈,需要用到FragmentManager的方法addToBackStack(null),这样在被激活的另一个Fragment中按下返回将会回到上一个这个Fragement

将Fragment加入返回栈

有时我们需要使用后退按钮来退回到上一个Fragment,可以通过FragmentManagerpopBackStack()方法手动返回

手动返回


Fragment的生命周期

Fragemnt的生命周期

如图所示是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

上一篇下一篇

猜你喜欢

热点阅读