安卓开发入门教程-Fragment
发布日期:2021-06-29 18:30:07
浏览次数:2
分类:技术文章
本文共 2993 字,大约阅读时间需要 9 分钟。
关注 ,免费获取全套安卓开发学习资料
什么是Fragment
Activity是整个看到的界面,而Activity则可以继续分割出多个Fragment. Fragment最初是为了在平板电脑充分利用空间,但是手机端也经常使用,主要目的是共用屏幕上某一块区域.
如下面一种界面,上面蓝色框是几个功能(推荐、应用、游戏等)共用的显示区域,当用户切换到不同的功能页时,就将共用显示区域内容替换为对应的功能Fragment.使用单个Fragment样例
效果图:
手动创建Fragment
- 在工程目录中单击右键,选择“New>Fragment>Fragment(Blank)”
- 在窗口中设置Fragment名称,对应布局文件名称.
- 默认创建的Fragment有点复杂,简化后如下:
class BlankFragment : Fragment() { override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { return inflater.inflate(R.layout.fragment_blank, container, false) }}
- 在Activity对应布局文件中增加用于容纳Fragment布局容器 修改activity_main.xml,添加一个FrameLayout,命名为containerLayout.
在Activity中加载该Fragment
下面演示点击button1按钮时,从MainActivity跳转到Main2Activity
replaceFragment(BlankFragment(), R.id.containerLayout)
完整代码如下:
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) replaceFragment(BlankFragment(), R.id.containerLayout) } private fun replaceFragment(fragment: Fragment, containerId: Int) = supportFragmentManager.beginTransaction().replace(containerId, fragment).commit()}
使用多个Fragment样例
多个Fragment利用同一块区域进行内容展示,一般可以通过标签页进行切换.
效果图
创建第一个Fragment及对应布局文件
- 第一个Fragment
class FirstFragment : Fragment() { override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { return inflater.inflate(R.layout.fragment_first, container, false) }}
- 第一个Fragment对应布局:fragment_first.xml
创建第二个Fragment及对应布局文件
- 第二个Fragment
class SecondFragment : Fragment() { override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { return inflater.inflate(R.layout.fragment_second, container, false) }}
- 第二个Fragment对应布局:fragment_second.xml
修改Activity对应的布局文件,展示两个底部标签.
下面代码中id为bottomLayout的布局,里面放了两个标签,用来点击切换页面上部containerLayout中的内容.
Activity代码中做Fragment加载及切换
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) //默认加载第一个Fragment replaceFragment(FirstFragment(), R.id.containerLayout) //对page1Tv控件添加点击事件,点击后切换至FirstFragment page1Tv.setOnClickListener { replaceFragment(FirstFragment(), R.id.containerLayout) } //对page2Tv控件添加点击事件,点击后切换至SecondFragment page2Tv.setOnClickListener { replaceFragment(SecondFragment(), R.id.containerLayout) } } private fun replaceFragment(fragment: Fragment, containerId: Int) = supportFragmentManager.beginTransaction().replace(containerId, fragment).commit()}
完整源代码
安卓开发入门教程系列汇总
开发语言学习
UI控件学习系列
关注头条号,第一时间获取最新文章:
转载地址:https://cxyxy.blog.csdn.net/article/details/107806115 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月11日 06时58分28秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
J-Link该如何升级固件?
2019-04-29
485通信自动收发电路,历史上最详细的解释
2019-04-29
一位头发发白的神人教你怎么写程序,运维,买电脑,写文章,平面设计!
2019-04-29
「第三篇」全国电子设计竞赛,这些你必须知道的比赛细节,文末附上近十年电赛题目下载...
2019-04-29
5G小科普(漫画版,So easy!)
2019-04-29
「第四篇」电赛控制题可以准备一些什么?
2019-04-29
树莓派翻车了
2019-04-29
这位电子工程师,你不能错过。
2019-04-29
干货分享 JVM 之第 3 篇 —— Java 内存结构相关
2019-04-29
UR5e机械臂运行一直阻塞在waitForServer
2019-04-29
ROS把pkg1下的某个头文件和源文件生成动态链接库供pkg2调用
2019-04-29
使用urdf_tutorial快速可视化urdf文件
2019-04-29
SQl 数据完整性(随堂博客)
2019-04-29
左连接、右连接、内连接
2019-04-29
MySQL DQL语句基础(随堂博客)
2019-04-29
利用MySQL进行数据复杂查询(1)
2019-04-29
MySQL 表与表之间的关系
2019-04-29
Python爬虫 百度热搜热点
2019-04-29
excel的常用函数(二)
2019-04-29