189 8069 5689

四大组件(5)-Fragment-创新互联

Fragment

成都创新互联是创新、创意、研发型一体的综合型网站建设公司,自成立以来公司不断探索创新,始终坚持为客户提供满意周到的服务,在本地打下了良好的口碑,在过去的10年时间我们累计服务了上千家以及全国政企客户,如柴油发电机等企业单位,完善的项目管理流程,严格把控项目进度与质量监控加上过硬的技术实力获得客户的一致称誉。

由于Activity太“重” 不能动态注册、不能模块化,因此引入Fragment

一、生命周期

onAttach():Fragment和Activity相关联时调用。可以通过该方法获取Activity引用,还可以通过getArguments()获取参数。

onCreateView():创建Fragment的布局。

onActivityCreated():当Activity完成onCreate()时调用。

onDestroyView():当Fragment的UI从视图结构中移除时调用。

onDetach():当Fragment和Activity解除关联时调用。

其它生命周期与Activity相同

上面的方法中,只有onCreateView()在重写时不用写super方法,其他都需要。

二、注意事项

1、参数传递 使用setArg(“bundle”),Fragment最好创建个newInstance(xx),让调用者不需要知道key名称

2、getActivity在onAttach中获取.

3、提交尽量用Commit,如在异步中提交,建议使用commitAllowingStateLoss() 

    commit  -> 安排当前事务FragmentTransaction进行提交。异步,必须在Activity的onSaveInstanceState调用之前提交。否则会抛异常。

commitAllowingStateLoss ->  和commit类似。但是如果本次是在Activity的onSaveInstanceState调用之后,那么本次提交记录在Activity恢复的时候,可能不被保存。

commitNow() -> 将事务立即提交。所有添加的Fragment会被立即初始化,并开始生命周期。所有被移除的Fragment将会被立即移除。

调用这个方法,相当于调用commit,然后调用FragmentManager的executePendingTransactions()。

commitNowAllowingStateLoss() -> 和commitNow类似。但是如果在在Activity的onSaveInstanceState调用之后,那么本次提交记录在Activity恢复的时候,可能不被保存。

4..当FragmentA(初始化)和FragmentB(后启动)调用 fragmentTransaction.replace()

"新建"  (onAttach->onCreate->onCreateView->onActivityCreated)

"显示"  (onStart->onResume)

"隐藏"  (onPause->onStop)

“结束”  (onDestroyView->onDestroy->onDetach)

FragmentA "打开"--->执行 "新建"  再执行FragmentA 的"显示"

FragmentB "打开"--->执行FragmentA "隐藏"  再才执行FragmentA “关闭” 执行 Fragment B "新建"  再执行Fragment B 的"显示"

FragmentB "关闭"--->执行FragmentB "隐藏"  再才执行FragmentB “关闭” 最后执行FragmentA 的"显示"

5、防止fragment重新加载,浪费用户流量或者影响用户体验。对于FragmentTransation的replace方法,官方的建议是如果上一个fragment是不保留的情况下可以使用。否则的话采用先add然后根据需求hide或者show,这样可以实现fragment缓存,另外一张情况就是和ViewPager联合使用,然后设置setOffscreenPageLimit()这个方法设置缓存的页面的大小。 

加回退栈的操作,如果使用 addToBackStack(String)将会抛出一个 IllegalStateException的异常。

参考:

基础(转载):https://www.jianshu.com/p/11c8ced79193

进阶(转载):https://www.jianshu.com/p/d9143a92ad94

备注: 个人笔记 ,有错请及时指出 ,谢谢  联系QQ:285232718

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享文章:四大组件(5)-Fragment-创新互联
文章来源:http://cdxtjz.cn/article/dggpcj.html

其他资讯