Android基础——Fragment读书笔记

来源:互联网 发布:制作头像的软件 编辑:程序博客网 时间:2024/06/05 17:38

本文为郭霖的《第二行代码》与鸿洋大神关于Fragment的读书笔记

静态创建

当成普通控件使用,直接写在Activity的布局文件中:
<fragment/>标签中声明android:name属性

动态创建(最常用)

生命周期

这里写图片描述

回退栈(类似于Activity的任务栈)

FragmentTransaction.addToBackStack(String)

与Activity之间的通信

  1. 如果你Activity中包含自己管理的Fragment的引用,可以通过引用直接访问所有的Fragment的public方法
  2. 如果Activity中未保存任何Fragment的引用,那么没关系,每个Fragment都有一个唯一的TAG或者ID,可以通过getFragmentManager.findFragmentByTag()或者findFragmentById()获得任何Fragment实例,然后进行操作。
  3. 在Fragment中可以通过getActivity得到当前绑定的Activity的实例,然后进行操作。
  4. 通过在Fragment设置回调接口,实现两者的通信

注:如果在Fragment中需要Context,可以通过调用getActivity(),如果该Context需要在Activity被销毁后还存在,则使用getActivity().getApplicationContext()。因为要考虑Fragment的重复使用,所以必须降低Fragment与Activity的耦合,而且Fragment更不应该直接操作别的Fragment,毕竟Fragment操作应该由它的管理者Activity来决定。

注意事项

  • transaction.replace() = transaction.remove() + transaction.add()。会销毁视图,调用声明周期的onDestoryView()方法,若在事务提交之前加入回退栈,还会调用onCreateView()
  • transaction.hide(),仅隐藏当前fragment,并不会销毁,不会调用生命周期方法。
  • transaction.show(),进显示当前fragment,不会调用生命周期方法。
  • hide()与show()是让fragment的View.setVisibility(true/false)。
  • add()与replace()不要在同一个阶级的FragmentManager混搭使用。
  • 应当注意show()、hide()在内存重启后带来的Fragment重叠问题
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 在12306买不到下铺怎么办有 地铁票买反了怎么办 香港买错特惠票怎么办 到达迪拜t3 后怎么办 海藻面膜调多了怎么办 被鸡爪子抓伤了怎么办 被鸡抓伤肿了怎么办 护士电子化没有激活码怎么办 窗帘盒螺丝掉了怎么办 窗帘的环扣掉了怎么办 门式起重吊装行车脱轨怎么办 在日本丢了东西怎么办 在日本钱包丢了怎么办 被起诉后没钱还怎么办 分期付款卖车打不起车款怎么办 地铁票买多了怎么办 工伤陪护费没有发票怎么办 工伤医疗费报销单位不盖章怎么办 家里的led灯坏了怎么办 吊顶led灯坏了怎么办 客厅空了一面墙怎么办 轨道灯的轨道不够长怎么办 奔驰大灯不亮了怎么办 led顶灯不亮了怎么办 吸顶灯led灯坏了怎么办 车底盘塑料被刮怎么办 汽车门电机坏了怎么办 宁波北仑普高差三分该怎么办 上班的地方甲醛味很重怎么办 公司不给员工交社保怎么办 户口转到学校毕业了怎么办 外地户口转到北京档案怎么办 隧道防水板过紧怎么办 到国企没报到证怎么办 车子锁了油箱盖能开怎么办 单位不接受档案和户口怎么办 完税凭证弄丢了怎么办 育种玉米公本早了怎么办 网银转账打错了怎么办 转账名字打错了怎么办 普通转账名字打错了怎么办