Fragment 学习笔记

最近在项目中经常要用到activitygroup实现tab的需求,知道某天同学和我说了fragment这个东西之后才发现这个神奇的存在

  1. 生命周期和Activity生命周期直接的关联
额,关于这个我只能说纯属自己手贱。人家在官方文档上面已经说的很清楚了自己最后还是忍不住的试了一下。先上一张官方给的图片,再上调试的log


可以看到,基本上除了create,destroy两块多出一些内容而且fragment没有restart之外,其他的生命周期基本上保持与activity同步的节奏(人家文档上早说了,自己作死)

2.Fragment 生命周期和FragmentTransaction四个操作的关系

ADD:

=========================================题外话========================================

关于这个操作的实际动作昨天看了文档之后有个问题自己纠结了好久:

在一个容器C中已经存在了一个fragment A,如果这个时候再向C中add另外一个fragment B会出现怎么样的情况?(A,B,C全屏显示)

这个问题之前用自己手机测试的时候发现后面的ADD操作之后C根本没哟发生任何变化,也就是说B没有出现在屏幕里。
这个时候就可能有两种情况:

一.add操作可以判断容器中当前是否已经持有了一个fragment,如果是的话就退出add操作
二.add操作在B添加在了C显示区域之外的地方(毕竟C的视图布局要不屏幕大)

上面两种情况里面,第一种只有看了源码之后才能知道,所以暂且不论。第二种情况测试的时候也出现了比较奇葩的事情,如果我将A,B的宽度设置为定置以此来保证屏幕宽度可以满足A,B同时出现,这个时候在执行上面问题中的操作就会发现B出现在A的右侧。这个貌似就应证刚刚的第二种猜想,但事后将A,B宽度设为全屏,添加B之后再用scroll来滚动容器的可视位置的时候根本看不到B(表示这个时候已经崩溃掉了)

事后向某位大手请教的时候人家就说刚刚那个问题上的操作结果是B就直接覆盖在了A上面,可是自己用手机是怎么也调不出来,真蛋疼(希望各位路过的大神解答一下这个问题)


=======================================正题================================================

使用add方法向一个容器中添加fragment的时候生命周期:


HIDE:
这个操作貌似对于fragment的生命周期没有任何的影响

REMOVE:
在这里是直接把fragment destroy掉





REPLACE:
如果用A 来replace A的话是没有任何动作,但是如果是B来replace就相当于对A执行remove操作,而对B执行add操作


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值