Fragmen的生命周期及简单通信

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共享信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值