Android Fragment 全面详解+Fragment应用实例
2014-12-23 09:33
886 查看
一、什么是Fragment?
Fragment是在Android 3.0 (API level 11)开始引入新的API技术。为了提高代码重用性和改善用户体验,我们将Activity中的UI组件进行分组和模块化管理。这些分组后的UI组件就是Fragment。一个Activity页面中可以包含多个Fragment模块,而同一个Fragment模块也可以被多个Activity使用。每个Fragment有自己的布局,有自己的生命周期。虽然Fragment拥有自己的生命周期,但因为Fragment必须被嵌入到Activity中使用,因此Fragment的生命周期是受其Activity宿主的生命周期所控制的。当Activity暂停时,该Activtiy内的所有Fragment都会暂停;当Activity被销毁时,该Activity内的所有Fragment都会被销毁。二、Fragment的生命周期
Activity与Fragment生命周期对比和各个方法介绍1、onAttach(): 当该Fragment被添加到Activity时被回调。该方法只会被调用一次; 2、onCreate(): 当创建Fragment时被回调。该方法只次; 3、onCreateView():每次创建、绘制该Fragment的View组件时回调该方法,Fragment将会显示该方法返回的View 组件; 4、onActivityCreated(): 当Fragment的宿主Activity被启动完成后回调该方法; 5、onStart(): 启动Fragment时被回调; 6、onResume(): onStart()方法后一定会回调onResume()方法; 7、onPause(): 暂停Fragment时被回调; 8、onStop(): 停止Fragment时被回调; 9、onDestroyView(): 销毁该Fragment所包含的View组件时调用; 10、onDestroy(): 销毁Fragment时被回调。该方法只会被调用一次; 11、onDetach(): 将Fragment从Activity中删除、替换完成时调用该方法。onDestroy()方法后一定会回调onDetach()方法。 该方法只会被调用一次。 |
三、如何创建一个Fragment?
(1)创建一个Fragment,必须继承Fragment这个基类或者子类。相应的子类有ListFragment、DialogFragment和PreferenceFragment。(2)实现相应的回调方法。Fragment包含了Activity类似的回调方法,例如onCreate()、 onStart()、onPause()以及 onStop()。事实上,如果你准备将一个现成的Android应用转换到使用Fragment,可能只需要将代码从你的Activity的回调方法中分别移动到你的Fragment的回调方法即可。通常,应当至少实现如下的生命周期方法:
onCreate()
当创建fragment时, 系统调用该方法。在实现代码中,应当初始化想要在fragment中保持的必要组件,当fragment被暂停或者停止后可以恢复。
onCreateView()
fragment第一次绘制它的用户界面的时候, 系统会调用此方法。为了绘制fragment的UI,此方法必须返回一个View,这个view是你的fragment布局的根view。
如果fragment不提供UI,可以返回nul。
onPause()
用户将要离开fragment时,系统调用这个方法作为第一个指示(然而它不总是意味着fragment将被销毁) 。在当前用户会话结束之前,通常应当在这里提交任何应该持久化的变化(因为用户有可能不会返回)。
四、Fragment与Activity之间值传递
(1)Activity向Fragment传递数据:在Activity中创建Bundle数据包对象,调用Fragment的setArguments(Bundle bundle)方法即可将Bundle数据包传给Fragment;而在Fragment的onCreate()中,只需要通过Bundlebundle = getArguments()就可以获取到传递的数据了;
(2)Fragment向Activity传递数据:在Fragment中定义一个内部回调接口,让该Fragment的宿主Activity实现该回调接口,这样Fragment就能够调用该回调方法将数据传给宿主Activity了。
五、FragmentManager与Fragment事务
Activity管理Fragment主要依靠FragmentManager。FragmentManager可以完成以下几方面的功能:
(1)使用findFragmentById()或findFragmentByTag()方法来获取指定Fragment;
(2)调用popBackStack()方法将Fragment从回退栈中弹出(如同用户按下“返回键”的效果);
(3)调用addOnBackStackChangeListener()注册一个监听器,用于监听回退栈的变化情况。在Activity中使用Fragment,一个很明显的特性是:根据用户的交互情况,可以对Fragment进行添加、移除、替换,以及执行其他动作,提交给Activity的每一套变化被称为一个事务。Fragment事务代表了Activity对Fragment执行的多个改变操作。实现事务借助于FragmentTransaction对象。我们可以保存每一个事务到一个Activity管理的backstack,这样用户就能由Fragment的变化往回导航。
FragmentManager与FragmentTransaction示例代码
// 通过getFragmentManager()方法构建FragmentManager对象 FragmentManager fragManager = getFragmentManager(); // 通过FragmentManager对象的beginTransaction()方法构建FragmentTransaction对象 FragmentTransaction trans = fragManager.beginTransaction(); // 将主页面布局文件中的ViewGroup容器替换成文章内容 trans.replace(R.id.fragment_content, fragment); // 将事务添加到回退栈,这样用户就可以通过“返回键”回到替换Fragment的上一个状态 trans.addToBackStack(null); // 提交事务 trans.commit();
六、应用实例(效果图如下)
左侧是文章标题列表Fragment,右侧是文章内容展示的Fragment。左侧的标题列表不变,点击每条列表项,右侧的文章内容发生变化。当屏幕空间不足时,会跳转到一个新的Activity。
源码下载地址:http://download.csdn.net/detail/shr957250701/8291599
相关文章推荐
- 详解Android Fragment之六:Fragment实例
- Android - TabHost 选项卡功能用法详解&&TabWidget切换卡的实现应用&&实例说明
- Android之应用坐标系统全面详解
- 实例讲解Android应用开发中Fragment生命周期的控制
- Android应用Loaders全面详解及源码浅析
- Android UI详解之Fragment实例详解
- Android应用Loaders全面详解及源码浅析
- FrameLayout和Fragment处理Android应用UI布局实例
- android fragment带实例详解(上)
- 实例探究Android应用编写时Fragment的生命周期问题
- Android Fragment应用实战:点击底部栏不懂选项弹不同Fragment实例
- Android的Handler Looper Message机制应用实例与详解(二) 推荐
- 【Android 应用开发】 Fragment 详解
- Android应用坐标系统全面详解
- Android学习指南之十四:Service详解及应用实例
- Android UI详解之Fragment实例详解
- 【Android 应用开发】 Fragment 详解
- Android的Handler Looper Message机制应用实例与详解(一)
- Android应用开发中Fragment的静态加载与动态加载实例
- Android应用坐标系统全面详解