当前位置: 首页 > news >正文

Fragment介绍(一)

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1 概述

Fragment是在Android 3.0开始引入fragment的,简单理解可以把它当成 activity中的模块,这个模块有自己的布局,有自己的生命周期,单独处理自己的输入,在Activity运行的时候可以加载或移除fragment模块

2 适用场景

当开发的应用程序同时适用于平板电脑和手机时,可利用fragment实现灵活的布局,改善用户体验

3 生命周期

因为fragment必须嵌入在activity中使用,所以fragment的生命周期和它所在的activiy是密切相关的

122920_bjEV_1792000.jpg

4 如何把fragment加入activity

Fragment有两种加载方式:一种是在Activity的layout中使用标签<fragment>声明;另一种方法是在代码中把它加入到一个指定的ViewGroup中。

加载方式1:通过Activity的布局文件将Fragment加入Activity

在Activity的布局文件中,将Fragment作为一个子标签加入即可

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="horizontal"       

 android:layout_width="match_parent"   

 android:layout_height="match_parent">
    <fragment android:name="com.example.news.ArticleListFragment"                         android:id="@+id/list"           

         android:layout_weight="1"         

           android:layout_width="0dp"         

           android:layout_height="match_parent" />
    <fragment android:name="com.example.news.ArticleReaderFragment"                            android:id="@+id/viewer"           

                 android:layout_weight="2"            

                android:layout_width="0dp"            

                android:layout_height="match_parent" />
</LinearLayout>

加载方式2:通过编程的方式将Fragment加入到一个ViewGroup中

当Activity处于Running状态下的时候,可以在Activity的布局中动态地加入Fragment,只需要指定加入这个Fragment的父View Group即可。首先,需要一个FragmentTransaction实例: 

注,如果import android.support.v4.app.FragmentManager;那么使用的是:FragmentManager fragmentManager = getSupportFragmentManager();) 

  //找到FragmentTransaction

                FragmentManager fragmentManager = getFragmentManager();

                FragmentTransaction fragmentTransaction = fragmentManager.

                        beginTransaction();

                MyFragment fragment = new MyFragment();

                //加到Activity中

                fragmentTransaction.add(R.id.lv_fragment_container,fragment);

                //加到后台堆栈中,有下一句代码的话,点击返回按钮是退到Activity界面,没有的话,直接退出Activity

                //后面的参数是此Fragment的Tag。相当于id

                fragmentTransaction.addToBackStack("fragment1");

                //记住提交

                fragmentTransaction.commit();









转载于:https://my.oschina.net/u/1792000/blog/362175

相关文章:

  • (转)视频码率,帧率和分辨率的联系与区别
  • LVS-DR负载均衡模式的arp_announce和arp_ignore详解
  • 轻量级web富文本框——wangEditor使用手册(2)——扩展一个“缩进”功能 demo
  • nginx相关参考博客
  • Spring MVC中jquery ajax传递view
  • Unrecognized Windows Sockets error: 0: JVM_Bind异常
  • 怎样区分直连串口线和交叉串口线?
  • Libgdx学习笔记:使用Action做定时器
  • Ruby 2.2.0发布,支持增量式垃圾收集和符号的垃圾收集
  • 【翻译】西川善司的「实验做出的游戏图形」「GUILTY GEAR Xrd -SIGN-」中实现的「纯卡通动画的实时3D图形」的秘密,后篇...
  • 仿小米便签图文混排 EditText解决尾部插入文字bug
  • 前端展示用部分CSS
  • 解剖SQLSERVER 第三篇 数据类型的实现(译)
  • DB2数据库用 With语句分隔字符
  • 处理和引发事件的规范
  • ----------
  • E-HPC支持多队列管理和自动伸缩
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • oldjun 检测网站的经验
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Vue学习第二天
  • XML已死 ?
  • 阿里云购买磁盘后挂载
  • 百度小程序遇到的问题
  • 笨办法学C 练习34:动态数组
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 如何编写一个可升级的智能合约
  • 异步
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • ​ArcGIS Pro 如何批量删除字段
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #DBA杂记1
  • #Ubuntu(修改root信息)
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (27)4.8 习题课
  • (AngularJS)Angular 控制器之间通信初探
  • (ibm)Java 语言的 XPath API
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (笔试题)合法字符串
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (七)理解angular中的module和injector,即依赖注入
  • (转)http协议
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • .Net Remoting常用部署结构
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • .net中我喜欢的两种验证码
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]