【Android面试】Fragment相关
发布日期:2021-06-28 19:08:28
浏览次数:4
分类:技术文章
本文共 1402 字,大约阅读时间需要 4 分钟。
Fragment 是在Android3.0被引入的。主要是为了给大屏幕手机提供支持。
Fragment的简单定义:
Fragment可以理解为一个自己具有生命周期的控件,它既有自己的处理能力,又有自己的生命周期,但是又必须依赖于Activity,能互相通信和托管
Fragment的几个优点:
代码复用。适合模块化开发。一个Fragment可以被多个Activity嵌套,有共同的业务模块就可以进行套用
Activity管理Fragment。Fragment的生命周期是寄托于Activity上面的,Fragment可以被Attach添加和Deatch释放掉
可控性。Fragment可以像普通对象那样自由的创建和控制,传递参数更加容易和方便,也不用处理系统相关的事情,显示方式,替换,不管是整体还是部分,都可以做到相应的更改。
解耦性。
Fragment的生命周期
相比于Activity的生命周期,Fragment的生命周期会多一些,主要是Fragment依附在Activity上。
onAttach:
Fragment和Activity建立关联的时候进行调用,被附加到Activity上onCreate:
创建Fragment的时候调用,初始化一些资源文件onCreateView:
Fragment首次绘制用户界面调用onViewCreated:
Fragment被绘制后,调用此方法,可以初始化控件资源onActivityCreated:
当onCreate,onCreateView,onViewCreated方法执行后进行调用Fragment的使用方式
- 静态用法 1 继承Fragment,重写onCreateView来决定布局 2 在Activity声明此Fragment,和普通的View一样
- 动态用法 1 继承Fragment,重写onCreateView来决定布局 2 Activity布局使用id,动态添加Fragment
动态添加Fragment步骤
1 获取到FragmentManager,在Activity中通过getFragmentManager来获得
2 开启事务,使用beginTransaction 3 向容器中加入Fragment,一般用replace方法,传入容器id和Fragment的实例 4 提交事务,使用commit提交一般代码:
Fragment1 fragment1 = new Fragment1(); getFragmentManager().beginTransaction().replace(R.id.main_layout, fragment1).commit();
Fragment通信
- Activity与Fragment的通信
findFragmentById 或者 findFragmentByTag
- Fragment与Fragment的通信 先通过获取到Activity,再使用接口的方式进行通信
Fragment 的注意事项
- Fragment在Activity中只有一个ID或Tag标识的实例
- 一个Activity中有一个Fragment池,实例不一定被销毁,可能会存在池子中
- FragmentManager的作用范围是整个Activity,所以,某一个布局ID,不能重复被Fragment替换
更多参考:
转载地址:https://blog.csdn.net/xudailong_blog/article/details/82357125 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月07日 20时28分07秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
前端拖拽插件gridster.js介绍与使用示例
2019-04-29
转载一个即将成为大牛朋友的学习方法(内涵相关文档资料,java相关),
2019-04-29
SonarLint插件的安装与使用(现在版本是3.3.1)
2019-04-29
springCloud你要了解的都在这(方向性)
2019-04-29
Java的clone():深复制与浅复制
2019-04-29
JAVA异常处理之finally中最好不要使用return
2019-04-29
Nginx与tomcat整合
2019-04-29
VMware Nat 连接固定ip设置操作详细指南
2019-04-29
大数据技术生态圈讲解
2019-04-29
Hadoop、Spark、HBase与Redis的适用性见解
2019-04-29
spark概述
2019-04-29
Hadoop、MapReduce、YARN和Spark的区别与联系
2019-04-29
我终于搞清楚了和String有关的那点事儿。
2019-04-29
Kafka入门---概念
2019-04-29
springcloud 第一篇: 服务的注册与发现Eureka(Finchley版本)
2019-04-29
springcloud 第三篇: 服务消费者(Feign)(Finchley版本)
2019-04-29
存储过程--综述
2019-04-29
存储过程教程
2019-04-29
oracle natural using join 区别
2019-04-29