
Fragment 是什么
今天我们来学习一个比较重要的组件--Fragment。Fragment在应用开发中应用得非常的频繁,特别是在开发一些需要兼容手机设备、平板设备和智能电视等大屏幕设备的应用,Fragment发挥着重要的作用。那说了这么多,Fragment到底是什么呢?在这里我们先简单的用一句话总结就是:Fragment是Android为了应用适配不同设备的大屏幕、支持更加动态和灵活的UI设计所提供的一个组件。
说到Fragment,就会联想到Activity,因为Fragment对象在应用中一般是不能独立存在的,它必须嵌入到activity中,而且Fragment的生命周期直接受所在的activity的影响。例如:当activity暂停时,他拥有的所有的Fragment都暂停了,当activity销毁时,他拥有的所有Fragment都被销毁。然而,当activity运行时(在onResume()之后,onPause()之前),可以单独地 *** 作每个Fragment,比如添加或删除它们。当中执行上述针对Fragment的事务时,可以将事务添加到一个栈中,这个栈被activity管理,栈中的每一条都是一个Fragment的一次事务。有了这个栈,就可以反向执行Fragment的事务,这样就可以在Fragment级支持“返回”键(向后导航)。
当向activity中添加一个Fragment时,它须置于ViewGroup控件中,并且需定义Fragment自己的界面。可以在layoutxml布局文件中声明Fragment,元素为:<fragment>;也可以在代码中创建Fragment,然后把它加入到ViewGroup控件中。然而,Fragment不一定非要放在activity的界面中,它可以隐藏在后台为activity工作。
Android在30之后引入了Fragment的概念,主要目的是用在大屏幕设备-例如平板电脑上,以便支持更加动态和灵活的UI设计。平板电脑的屏幕尺寸比手机大得多,因此有更多的空间来存放更多的UI组件,并且这些组件之间会产生更多的交互。Fragment允许这样的一种设计,而不需要你亲自来管理viewhierarchy的复杂变化。通过将Activity的布局分散到Fragment中,你可以在运行时修改Activity的外观,并在由Activity管理的Back
stack中保存那些变化。
例如,一个新闻应用可以在屏幕的左侧使用一个Fragment来展示一个文章的列表,然后在屏幕右侧使用另一个Fragment来展示一篇文章,两个Fragment并排显示在相同的一个Activity中,并且每一个Fragment拥有它自己的一套生命周期回调方法,并且处理它们自己的用户输入事件。因此,取代使用一个activity来选择一篇文章而另一个activity来阅读文章的方式,用户可以在同一个activity中选择一篇文章并且阅读,如图所示
详细
首先是Fragment的文件
activity_fragment_tabxml
接下来是主Activity的布局文件
activity_fragment_tabxml
Fragment的类文件
ContextFragmentjava
Activity的类文件
FragmentTabActivityjava
第一步、需要先获取FragmentManager,该对象可以对Fragment进行管理
第二步、获得FragmentTranscation,FragmentManage对Fragment的一系列事务 *** 作主要由FragmentTranscation来执行
第三步、实例化Fragment,这步没什么好说的
第四步、将Fragment添加到容器中,这里用的是add()方法,其中replace()也可以实现,目前还没有了解这两个方法的区别
第五步、用Bundle来通信,实现向Fragment传递数据,这里主要传的是文本的值
第六步、提交事务,如果忘了这一步,之前所做的都没有效果,就跟执行更新数据,却没有提交一样
第一步、需要先获取FragmentManager,该对象可以对Fragment进行管理
第二步、获得FragmentTranscation,FragmentManage对Fragment的一系列事务 *** 作主要由FragmentTranscation来执行
显示Fragment
隐藏Fragment
最后一步、提交事务
需要做的准备
新建一个android项目,主Activity命名为MainActivity
创建三个Fragment1 Fragment2 Fragment3
为三个Fragment创建三个布局文fragment1xml、fragment2xml、fragment3xml
布局 activity_mainxm
fragment1xml样例
Fragment1样例
另外的可以根据样例进行修改
activity_mainxml内容
activity打开时我们需要显示一个fragment,也就是需要先向容器中添加一个fragment
这是就能显示第二个fragment了,那么如何切换不同的fragment呢,切换的过程如下
开启事务
调用事务的replace方法,将当前容器的fragment替换为新的fragment
提交事务
初始化时显示的是 fragment2
实践1 :fragment2------点击按钮frag1-----按返回键--------退出应用
实践2: fragment2-----点击按钮frag3 -----按返回键--------返回到fragment2
为啥会出现上面的情况,原因就是切换到fragment3时,调用了addToBackStack方法,这时会将fragment2先入栈,然后再切换到fragment3,按返回键的时候fragment3销毁,fragment2出栈显示,而切换到fragme1时没有将fragme2入栈,所以fragment2就直接销毁了,再按返回键就直接退出应用了。
访问fragment 1、fragment初始化时,可以通过setArguments的方式 2、fragment初始化完成后,可以通过fragment里面的自定义方法访问 访问activity 1、可以通过getActivity()方法的方式访问 2、定义回调接口进行访问
以上就是关于简述Fragment的作用全部的内容,包括:简述Fragment的作用、Android碎片Fragment之多标签切换效果(微信和QQ底部多标签切换)、android 怎么开启fragment等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)