Android成长日记-Fragment
(一)Android在3.0中引入了Fragment的概念,主要目的是用在大屏幕设备上—例如平板电脑上,支持更加动态和灵活的UI设计。平板电脑的屏幕要比手机大的多,有更多的空间放更多的UI组件,并且这些组件之间会产生更多的交互
(二)Fragment在你的应用中应当是一个模块化和可重用的组件,因为Fragment定义了他自己的布局,以及通过使用他自己的生命周期回调方法定义了他自己的行为,你可以将Fragment包含到多个activity中
(三)【Fragment知识概要】
(1)Fragment可以作为Activity界面的一部分组成出现
(2)可以在一个activity同时多个Fragment,并且一个Fragment可以运行在多个activity中使用
(3)在activity运行过程中,可以添加、移除、替换Fragment
(4)Fragment可以响应自己的输入事件,并且有自己的生命周期,他们的生命周期会受宿主activity的生命周期的影响
-------------------------------------------------------------------
(四)Fragment的加载方式
(1)静态加载
在activity的layout文件中声明Fragment,需要特别注意的是<Fragment>中的Android:name属性指定了在layout中实例化的Fragment类
--à标示Fragment的方法
Android:id属性提供一个唯一的ID
Android:tag属性提供一个唯一字符串
Eg:
//实现布局文件中包含<fragment>,<fragment>的name为一个类,类中的将另外一个含有控件 的布局转换成View对象,将View对象-à之前的布局文件中的操作(关键词:静态加载)
1. 在layout创建一个main,在main中存放Fragment.xml
(ps:Fragment含有id,width,height,name)
2. 在layout创建一个fragment_kongjian.xml,含有组件(TextView,Button)
3. 创建fragment.java,创建方法:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
4. 将Layout布局文件转换成View对象
View view = inflater.inflate(R.layout.fragment_kongjian, container, false)
Ps(resource:Fragment需要加载的布局文件
root:加载layout的父ViewGroup;
attactToRoot:false,不返回父ViewGroup)
5. 初始化fragment_kongjian.xml中的空间
TextView text=(TextView) view.findViewById(R.id.text);
Button button=(Button) view.findViewById(R.id.button)
6. 操作略
7. 在MainActivity.java中创建intent,当按钮点击后跳转到SecondActivity.java,SecondActivity.java含有一个onCreate方法,为打开main布局—>1.main.xm
8. Main.xml中的frame的布局的name:Fragment.java的具体位置
------------------------------------------------------------------
(2)动态加载
撰写代码将Fragment添加到一个Activity Layout中
add():添加一个Fragment(指定要添加的Fragment和插入的View)
与此类似的还有remove()/replace()
*处理Fragment事务
根据用户的交互情况,对Fragment进行添加、移除、替换、以及执行其他操作,提交给Activity的每一套变化被称作一个事务
FragmentManager fragmentManager==getFragmentManager();
FragmentTransaction beginTransaction= fragmentManager.beginTransaction();
Eg:
实现步骤:
1. Fragment fragment=new fragment();
//这个Fragment为含有View对象的Fragment.java
2. ps:以事务的方式进行操作
FragmentManager fragmentManager==getFragmentManager();
FragmentTransaction beginTransaction= fragmentManager.beginTransaction();
beginTransaction.add(“R.id.frame”[s1] ,frameManager[s2] );
beginTransaction.addToBackStack[s3] (null);
beginTransaction.commit();//提交事务
-----------------------------------------------------------------------
PS:每一个事务都是同时执行一套变化,可以在一个事务中设置你所有想执行的变化,包括add(),remove(),replace(),然后提交给Activity,必须调用commit()方法-à与数据库的事务提交方法相同
如果允许用户通过按下BACK按键返回到前一个Fragment状态,调用commit()之前可以加入addToBackStack()方法
-----------------------------------------------------------------------
[s1]一个LinearLayout
[s2]含有控件的View对象,为当期的FragmentManager.java
[s3]加入物理返回按键,返回上一个界面
Android成长日记-Fragment的更多相关文章
- Android成长日记-Fragment的生命周期与Activity通信
1. public void onAttach(Activity activity) 当Fragment被添加到Activity时候会回调这个方法,并且这个方法只会被回调一次 2. public vo ...
- Android成长日记-Android四大组件之Service组件的学习
1.什么是Service? Service是Android四大组件中与Activity最相似的组件,它们都代表可执行的程序,Service与Activity的区别在于:Service一直在后台运行,它 ...
- Android成长日记-数据存储之SQLite[1]
[SQLite简介] SQLite是R.Richard Hipp用C语言编写的开源嵌入式数据库引擎.它支持大多数的SQL92标准,并且可以在所有主要的操作系统上运行 ---支持高达2TB大小的数据库: ...
- Android成长日记-五大布局
1. 五布局之线性布局LinearLayout 特点:它包含的子控件将以横向或竖向的方式排列 ps:android:gravity=”center|bottom”(gravity允许多级联用) Tip ...
- Android成长日记-数据存储之SharedPreferences
数据篇-SharedPreferences Android的四种存储方式 1. SharedPreferences 2. SQLite 3. Content Provider 4. File ---- ...
- Android成长日记-使用ViewFlipper实现屏幕切换动画效果
(一) ViewFlipper介绍 Android系统自带的一个多页面管理控件,它可以实现子界面的自动切换 (二) 为ViewFlipper加入View 1. 静态导入:在Layout布局文件中直接导 ...
- Android成长日记-使用ToggleButton实现灯的开关
案例演示 此案例实现思路:通过ToggleButton控件,ImageView控件实现 ---xml代码: <!-- textOn:true textOff:falase[s1] --> ...
- Android成长日记-使用PagerAdapter实现页面切换
Tip:此方式可以实现页面切换 1. 创建view1.xml,view2.xml,view3.xml,main.xml 在main.xml中创建 <android.support.v4.view ...
- Android成长日记-使用Intent实现页面跳转
Intent:可以理解为信使(意图),由Intent来协助完成Android各个组件之间的通讯 Intent实现页面之间的跳转 1->startActivity(intent) 2->st ...
随机推荐
- 解决MWPhotoBrowser中的SDWebImage加载大图导致的内存警告问题
下面两种现象,用同一种方法解决 1.解决MWPhotoBrowser中的SDWebImage加载大图导致的内存警告问题 2.突然有一天首页访问图片很慢,至少隔20多秒所有图片才会出来.(解析:app使 ...
- PCL 库安装
参考资料: http://www.cnblogs.com/newpanderking/articles/4022322.html VS2010+PCL配置 PCL共有两种安装方式 安全安装版,个人配置 ...
- IO(一)----字节流
File类是文件的抽象表示,如果要对文件的内容进行读写就需要使用IO流技术. IO流简介:(Input/Output) I/O类库中使用"流"这个抽象概念.Java对设备中数据的操 ...
- <实训|第十二天>用LVM对linux分区进行动态扩容
[root@localhost~]#序言在linux中,我们安装软件的途径一般有那些,你们知道吗?在linux中,如果你的磁盘空间不够用了,你知道如何来扩展磁盘吗?动态扩容不仅在工作中还是在其他方面都 ...
- (六)观察者模式详解(包含观察者模式JDK的漏洞以及事件驱动模型)
作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 本章我们讨论一个除前面的单例 ...
- vNext之旅(1):从概念和基础开始
ASP.NET vNext or .NET vNext? vNext在曝光以来绝大多数以ASP.NET vNext这样的的字眼出现,为什么这边会提及.NET vNext?原因是我认为ASP.NET只是 ...
- 提高Visual Studio开发性能的几款插件
通过打开Visual Studio,单机TOOLS—Extensions and Updates-Online-Visual Studio Gallery(工具-扩展和更新-联网-Visual Stu ...
- 2016 5.03开始记录我的it学习。
好多谢立成师兄给我这个网址,我发现博客园不仅仅可以随笔记载很多东西,还是一个资源丰富的网站,接下来的四年我会用心去记录这些学习的点滴.
- WinForm 问题集锦
[1]重用项目窗体解决方案: 1. 把FmMain.cs 和 FmMain.Designer.cs 和 FmMain .resx 三个文件复制到程序目录下: 2. 在vs里面添加现有项, 选择FmMa ...
- pdo简单操作
PDO(PHP Data Object) 是PHP 5新出来的东西,在PHP 6都要出来的时候,PHP 6只默认使用PDO来处理数据库,将把所有的数据库扩展移到了PECL,那么默认就是没有了我们喜爱的 ...