flagment生命周期相关.docx
- 文档编号:18321793
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:24
- 大小:194.10KB
flagment生命周期相关.docx
《flagment生命周期相关.docx》由会员分享,可在线阅读,更多相关《flagment生命周期相关.docx(24页珍藏版)》请在冰点文库上搜索。
flagment生命周期相关
(一)理解Fragment生命周期1
(二)androidFragments详解六:
处理fragement的生命周期5
把条目添加到动作栏5
处理fragement的生命周期5
协调与activity生命周期的关系7
(三)Fragment生命周期(各阶段状态)7
(四)Fragment学习-----简介与生命周期研究(详细代码)8
1、它在一个activity里面表示一个行为或者用户接口的一部分。
9
2、 一个fragment必须总是绑定到一个activity中,虽然fragment有自己的生命周期,但同时也被它的宿主activity的生命周期直接影响。
9
3、 fragment可以定义自己的布局文件(layout),当然其也可以没有自己的UI。
9
4、Fragment对象的生命周期。
10
5、Fragment的生命周期分析15
(一)理解Fragment生命周期
分类:
Android的深入2012-11-2914:
3336454人阅读评论(20)收藏举报
官网帮助文档链接:
主要看两张图,和跑代码
一,Fragment的生命周
二,与Activity生命周期的对比
场景演示:
切换到该Fragment
11-2914:
26:
35.095:
D/AppListFragment(7649):
onAttach
11-2914:
26:
35.095:
D/AppListFragment(7649):
onCreate
11-2914:
26:
35.095:
D/AppListFragment(7649):
onCreateView
11-2914:
26:
35.100:
D/AppListFragment(7649):
onActivityCreated
11-2914:
26:
35.120:
D/AppListFragment(7649):
onStart
11-2914:
26:
35.120:
D/AppListFragment(7649):
onResume
屏幕灭掉:
11-2914:
27:
35.185:
D/AppListFragment(7649):
onPause
11-2914:
27:
35.205:
D/AppListFragment(7649):
onSaveInstanceState
11-2914:
27:
35.205:
D/AppListFragment(7649):
onStop
屏幕解锁
11-2914:
33:
13.240:
D/AppListFragment(7649):
onStart
11-2914:
33:
13.275:
D/AppListFragment(7649):
onResume
切换到其他Fragment:
11-2914:
33:
33.655:
D/AppListFragment(7649):
onPause
11-2914:
33:
33.655:
D/AppListFragment(7649):
onStop
11-2914:
33:
33.660:
D/AppListFragment(7649):
onDestroyView
切换回本身的Fragment:
11-2914:
33:
55.820:
D/AppListFragment(7649):
onCreateView
11-2914:
33:
55.825:
D/AppListFragment(7649):
onActivityCreated
11-2914:
33:
55.825:
D/AppListFragment(7649):
onStart
11-2914:
33:
55.825:
D/AppListFragment(7649):
onResume
回到桌面
11-2914:
34:
26.590:
D/AppListFragment(7649):
onPause
11-2914:
34:
26.880:
D/AppListFragment(7649):
onSaveInstanceState
11-2914:
34:
26.880:
D/AppListFragment(7649):
onStop
回到应用
11-2914:
36:
51.940:
D/AppListFragment(7649):
onStart
11-2914:
36:
51.940:
D/AppListFragment(7649):
onResume
退出应用
11-2914:
37:
03.020:
D/AppListFragment(7649):
onPause
11-2914:
37:
03.155:
D/AppListFragment(7649):
onStop
11-2914:
37:
03.155:
D/AppListFragment(7649):
onDestroyView
11-2914:
37:
03.165:
D/AppListFragment(7649):
onDestroy
11-2914:
37:
03.165:
D/AppListFragment(7649):
onDetach
比Activity多了一些生命周期,完整和Activity对接上,大家好好利用。
(二)androidFragments详解六:
处理fragement的生命周期
把条目添加到动作栏
你的fragment们可以向activity的菜单(按Manu键时出现的东西)添加项,同时也可向动作栏(界面中顶部的那个区域)添加条目,这都需通过实现方法onCreateOptionManu()来完成。
你从fragment添加到菜单的任何条目,都会出现在现有菜单项之后。
Fragment之后可以通过方法onOptionsItemSelected()来响应自己的菜单项被选择的事件。
你也可以在fragemnt中注册一个view来提供快捷菜单(上下文菜单)。
当用户要打开快捷菜单时,fragment的onCreateContextMenu()方法会被调用。
当用户选择其中一项时,fragemnt的onContextItemSelected()方法会被调用。
注:
尽管你的fragment可以分别收到它所添加的菜单项的选中事件,但是activity才是第一个接收这些事件的家伙,只有当activity对某个事件置之不理时,fragment才能接收到这个事件,对于菜单和快捷菜单都是这样。
处理fragement的生命周期
管理fragment的生命周期有些像管理activity的生命周期。
Fragment可以生存在三种状态:
Resumed:
Fragment在一个运行中的activity中并且可见。
Paused:
另一个activity处于最顶层,但是fragment所在的activity并没有被完全覆盖(顶层的activity是半透明的或不占据整个屏幕)。
Stoped:
Fragment不可见。
可能是它所在的activity处于stoped状态或是fragment被删除并添加到后退栈中了。
此状态的fragment仍然存在于内存中。
同样类似于activity,你可以把fragment的状态保存在一个Bundle中,在activity被recreated时就需用到这个东西。
你可以在onSaveInstanceState()方法中保存状态并在onCreate()或onCreateView()或onActivityCreated()中恢复,关于更多的保存状态的信息,请参考Activitys章节。
Fragment与Activity的生命周期中最大的不同就是存储到后退栈中的过程。
Activity是在停止时自动被系统压入停止栈,并且这个栈是被系统管理的;而fragment是被压入activity所管理的一个后退栈,并且只有你在删除fragment后并明确调用addToBackStack()方法时才被压入。
然而,管理fragment的生命周期与管理activity的生命周期极其相似。
你所需要去思考的是activity的生命周期如何影响fragment的生命周期。
协调与activity生命周期的关系
Activity直接影响它所包含的fragment的生命周期,所以对activity的某个生命周期方法的调用也会产生对fragment相同方法的调用。
例如:
当activity的onPause()方法被调用时,它所包含的所有的fragment们的onPause()方法都会被调用。
Fragment比activity还要多出几个生命周期回调方法,这些额外的方法是为了与activity的交互而设立,如下:
onAttach()
当fragment被加入到activity时调用(在这个方法中可以获得所在的activity)。
onCreateView()
当activity要得到fragment的layout时,调用此方法,fragment在其中创建自己的layout(界面)。
onActivityCreated()
当activity的onCreated()方法返回后调用此方法。
onDestroyView()
当fragment的layout被销毁时被调用。
onDetach()
当fragment被从activity中删掉时被调用。
一旦activity进入resumed状态(也就是running状态),你就可以自由地添加和删除fragment了。
因此,只有当activity在resumed状态时,fragment的生命周期才能独立的运转,其它时候是依赖于activity的生命周期变化的。
(三)Fragment生命周期(各阶段状态)
2012-07-0214:
44:
05| 分类:
Android| 标签:
|举报|字号大中小 订阅
1.当一个fragment被创建的时候,它会经历以下状态.。
onAttach()
onCreate()
onCreateView()
onActivityCreated()
2.当这个fragment对用户可见的时候,它会经历以下状态。
onStart()
onResume()
3.当这个fragment进入“后台模式”的时候,它会经历以下状态。
onPause()
onStop()
4.当这个fragment被销毁了(或者持有它的activity被销毁了),它会经历以下状态。
onPause()
onStop()
onDestroyView()
onDetach()
5.就像activitie一样,在以下的状态中,可以使用Bundle对象保存一个fragment的对象。
onCreate() //保存的数据恢复
onCreateView() //初始化UI
onActivityCreated() //具体操作
6.fragments的大部分状态都和activitie很相似,但fragment有一些新的状态。
onAttached()——当fragment和activity关联之后,调用这个方法。
onCreateView()——创建fragment中的视图的时候,调用这个方法。
onActivityCreated()——当activity的onCreate()方法被返回之后,调用这个方法。
onDestroyView()——当fragment中的视图被移除的时候,调用这个方法。
onDetach()——当fragment和activity分离的时候,调用这个方法。
(四)Fragment学习-----简介与生命周期研究(详细代码)
分类:
Android开发(初级)2013-05-2420:
532804人阅读评论(4)收藏举报
AndroidFragment平板开发布局
目录(?
)[+]
1.它在一个activity里面表示一个行为或者用户接口的一部分
2.一个fragment必须总是绑定到一个activity中虽然fragment有自己的生命周期但同时也被它的宿主activity的生命周期直接影响
3.fragment可以定义自己的布局文件layout当然其也可以没有自己的UI
4.Fragment对象的生命周期
5.Fragment的生命周期分析
Fragment:
碎片、片段,碎片表示轻量级和灵活,是开发android平板电脑必须掌握的技术。
其将界面UI进行分块,以块的方式组织UI,完全可以达到界面UI组件的复用。
1、它在一个activity里面表示一个行为或者用户接口的一部分。
我们可以将不同的Fragments组合起来放到一个activity中,或者在不同的activity中重用一个fragment。
你可以将一个fragment看成是一个activity中的一个片段,它有自己的生命周期(如何从创建到销毁),接受它自己的输入事件,并且可以在activity运行时动态的添加或者移除一个fragment。
2、 一个fragment必须总是绑定到一个activity中,虽然fragment有自己的生命周期,但同时也被它的宿主activity的生命周期直接影响。
比如,当一个activity暂停的时候,它里面所有的fragments也同样暂停;当activity销毁的时候,它里面所有的fragment同样也被销毁;然而,当一个activity正在运行(它处于resumed生命周期的时候),我们可以独立的操纵每个fragment执行注入添加和移除它们;另外,当你执行一个fragment操作的时候,你可以将它添加到一个历史栈里面去,这个栈是由它的宿主activity维护,每一个栈里面的元素都是一个已经被执行过的fragment。
这个堆栈可以让我们通过返回键来恢复之前的fragment。
3、 fragment可以定义自己的布局文件(layout),当然其也可以没有自己的UI。
当你将一个fragment作为activity的布局文件的一部分添加进去的时候,它就在activity的视图层次中的ViewGroup中。
(1)可以通过在activity的layout中定义
(2)或者在代码中将其添加到当前的ViewGroup(视图组合,或者称为视图元素组合)中。
注意:
一个fragment并不一定要求是activity布局文件的一部分,我们也可以使用一个没有自己UI的fragment,作为一个activity不可见的一部分。
注:
Fragment是android3.0版本开始提供的技术,google为了能够兼容1.6以上的版本,提供了android-support-v4.jar包。
可以通过SDKManager下载AndroidSupportPackage,在Extras目录下的AndroidSupport。
使用时你需要在项目代码顶层创建libs文件夹,并将该jar库文件拷贝到libs里面去。
下面使用该jar来研究fragment。
4、Fragment对象的生命周期。
1、创建布局文件layout1
[java]viewplaincopyprint?
1. android=" 2. android: layout_width="match_parent" 3. android: layout_height="match_parent" 4. android: layout_gravity="center" 5. android: gravity="center_vertical" 6. android: orientation="vertical" > 7. 8. 9. android: id="@+id/textView1" 10. android: layout_width="wrap_content" 11. android: layout_height="wrap_content" 12. android: text="My First Fragment for android1.6" 13. android: textColor="#ff00ff" 14. android: textSize="33sp" /> 15. 16.
android=" android: layout_width="match_parent" android: layout_height="match_parent" android: layout_gravity="center" android: gravity="center_vertical" android: orientation="vertical"> android: id="@+id/textView1" android: layout_width="wrap_content" android: layout_height="wrap_content" android: text="MyFirstFragmentforandroid1.6" android: textColor="#ff00ff" android: textSize="33sp"/> 2、创建activity_main布局文件 [java]viewplaincopyprint? 1. android=" 2. xmlns: tools=" 3. android: layout_width="match_parent" 4. android: layout_height="match_parent" 5. android: gravity="center" 6. android: orientation="vertical" > 7. 8. 9. android: layout_width="wrap_content" 10. android: layout_height="wrap_content" 11. android: layout_centerHorizontal="true" 12. android: layout_centerVertical="true" 13. android: text="@string/hello_world" 14. tools: context=".MainActivity" /> 15. 16. android: name="com.example.myfragment.MyFragment1" 17. android: id="@+id/myfragment1" 18. android: tag="MyFragment" 19. android: layout_width="wrap_content" 20. android: layout_height="wrap_content"/> 21. 22. android=" xmlns: tools=" android: layout_width="match_parent" android: layout_height="match_parent" android: gravity="center" android: orientation="vertical"> android: layout_width="wrap_content" android: layout_height="wrap_content" android: layout_centerHorizontal="true" android: layout_centerVertical="true" android: text="@string/hello_world" tools: context=".MainActivity"/> android: name="com.example.myfragment.MyFragment1" android: id="@+id/myfragment1" android: tag="MyFragment" android: layout_width="wrap_content" android: layout_height="wrap_content"/> 3、创建MyFragment1 [java]viewplaincopyprint? 1.package com.example.myfragment; 2. 3.import android.app.Activity; 4.import android.os.Bundle; 5.import android.support.v4.app.Fragment; 6.import android.util.Log; 7.import android.view.LayoutInflater; 8.import android.view.View; 9.import android.view.ViewGroup; 10. 11.public class MyFragment1 extends Fragment{ 12. @Override 13. public void onAttach(Activity activity) { 14. // TODO Auto-genera
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- flagment 生命周期 相关
![提示](https://static.bingdoc.com/images/bang_tan.gif)