您的位置:首页 > 移动开发 > Android开发

Fragmen的生命周期及简单通信

2016-04-01 22:53 537 查看
Fragments生命周期如图所示:



Fragments在其生命周期中的回调方法与activity有很多相似的地方,但Fragment有一些额外的生命周期回调方法:

onAttach():当fragment被绑定到activity时调用(Activity会被传入)。

onCreateView():创建与fragment相关的视图体系时被调用。

onActivityCreated():当activity的onCreate()函数返回时被调用。

onDestroyView():当与fragment关联的视图体系正被移除时被调用。

onDetach():当fragment正与activity解除关联时被调用。

一般情况下,创建fragment至少要为其实现以下几个方法:

onCreate()

在创建fragment时系统会调用此方法。在实现代码中,你可以初始化想要在fragment中保持的那些必要组件,当fragment处于暂停或者停止状态之后可重新启用它们。

onCreateView()

在第一次为fragment绘制用户界面时系统会调用此方法。为fragment绘制用户界面,这个函数必须要返回所绘出的fragment的根View。如果fragment没有用户界面可以返回空。

onPause()

系统回调用该函数作为用户离开fragment的第一个预兆(尽管这并不总意味着fragment被销毁)。在当前用户会话结束之前,通常要在这里提交任何应该持久化的变化(因为用户可能不再返回)。

在生命周期方面,activity与fragment之间一个很重要的不同,就是在各自的后台栈中是如何存储的。当activity停止时,默认情况下,activity被安置在由系统管理的activity后台栈中(因此用户可以按BACK键回退导航,就像在Tasks和后台栈中讨论的那样)。但是,仅当你在一个事务被移除时,通过显式调用addToBackStack()请求保存的实例,该fragment才被置于由宿主activity管理的后台栈。

Activity与Fragment的通信

1. Activity管理Fragment

想要管理activity中的fragment,可以使用FragmentManager。可以通过在activity中调用getFragmentManager()获得。

在activity中使用fragment的一大特点是具有添加、删除、替换,和执行其它动作的能力,以响应用户的互动。代码如下:

FragmentManager fragmentManager = getFragmentManager();

FragmentTransaction f=fragmentManager.beginTransaction();

f.add(R.id.fragment_container, newFragment);

f.replace(R.id.fragment_container, newFragment);//添加fragment

f.addToBackStack(null);//将fragment提交到后台栈

f.commit();//提交事务

2. Fragment获得宿主Activity并向其传递信息

fragment可以通过getActivity()函数访问Activity。

在一些情况下,你可能需要fragment与activity共享事件。这样做的一个好方法是在fragment内部定义一个回调接口,并需要宿主activity实现它。为了确保宿主activity实现了这个接口,fragment A的onAttach()回调函数(当添加fragment到activity中时系统会调用它)通过作为参数传入onAttach()的activity的类型转换来实例化一个OnArticleSelectedListener实例。当activity通过接口接收到回调时,可以在必要时与布局中的其它fragment共享信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android