Android Fragment简介
来源:互联网 发布:新激光雷达识别软件 编辑:程序博客网 时间:2024/05/07 01:44
Android Fragment简介
• 背景
在手机开发的时候设计的UI往往要兼顾手机和平板屏幕的尺寸充分利用屏幕的空间,碎片(Fragment)是一种可以嵌入在活动当中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间,兼顾手机和平板的开发,自Android3.0版本就开始引进,解决手机、平板电脑等各种设备的适配问题;解决多个Activity之间切换性能问题,Activity像是个容器里面装载多个Fragment并对他们进行管理,当Activity销毁的时候其中的Fragment都被销毁;模块化,因为模块化导致复用的好处,Fragment在应用开发中用到的越来多应当足够的重视。
• 静态加载碎片
创建一个碎片类来继承Fragment并把布局动态的加载进来,这个Fragment建议使用support-4库。
如果你在Fragment的XML布局文件添加到Activity的XML布局文件,那么你无法在运行时移除这个Fragment。
通过的xml布局的方式将碎片显示到屏幕上,一般是不实用的,我们看一下流程:先创建一个xml布局文件frag_new.xml,再创建一个NewFragment类并继承Fragment,其中重写onCreateView()方法把碎片要加载的布局文件frag_new布局文件添加进去,上面的这个过程是创建碎片的最基本。
代码示例:
public class NewFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.frag_new, container, false); }
但是怎么将碎片显示或切换到Activity上呢?一种方法可以说是静态添加的方式,就是在Activity的xml布局文件中添加fragment标签如下:
<fragment android:id="@+id/fragLeft" <!--要添加的碎片布局,以该类的包名形式添加--> android:name="com.example.fragmenttest.NewFragment" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1"/>
• 动态添加碎片
开发中如要实现碎片的交互还要使用动态加载碎片,动态使用就是向Fragment布局容器中动态添加、替换、移除、隐藏、显示Fragment。
FragmentManager类提供了在运行时(runtime)从活动中添加,移除,替换碎片的方法,这样可以创造一个动态的体验。这个过程是要FragmentManager来创建FragmentTransaction,利用它提供的API来进行添加、移除、替换(这些都是事务transaction)等。最后提交事务commit()来完成转换。
代码示例:
replaceFragment(new AnotherFragment());private void replaceFragment(Fragment newfragment) { FragmentManager fragmentManager= getSupportFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); //right_layout是Activity活动布局中的一个嵌套布局的id,用来装载碎片 //经实验使用相对布局和帧布局合适 transaction.replace(R.id.right_layout, newfragment); //将一个事务添加到返回栈 transaction.addToBackStack(null); transaction.commit(); }
• 碎片返回栈
若回退键返回到上一个fragment可以使用FragmentTransaction提供的addToBackStack()方法将事务添加到返回栈中。
• 碎片的生命周期
1. 运行状态:它所关联的活动处于活动状态时,该碎片也处于活动状态
2. 暂停状态:当活动进入到暂停状态时(就是另一个为沾满屏幕的活动被添加到栈顶),相联可见碎片会进入到暂停状态。
3. 停止状态:活动停止碎片即停止,或者通过调用FragmentTransaction 的remove()、replace()方法将碎片从活动中移除,但有在事务提交之前调用addToBackStack()方法,这时的碎片也会进入到停止状态。(停止状态碎片不可见)
4. 销毁状态:依附活动的碎片,随活动销毁 与相关联的碎片进入销毁状态。或者通过调用FragmentTransaction 的remove()、replace()方法将碎片从活动中移除,但在事务提交之前并没有调用addToBackStack()方法,这时的碎片也会进入到销毁状态。
onCreate():系统创建Fragment对象后回调该方法,实现代码中只初始化想要在Fragment中保持的必要组件。
onCreateView():当Fragment绘制界面组件时回调该方法
onPause():当用户离开该Fragment时将会回调该方法
•onAttach():Fragment和Activity建立关联的时候调用。•onCreateView():为Fragment加载布局时调用。•onActivityCreated():当Activity中的onCreate方法执行完后调用。•onDestroyView():Fragment中的布局被移除时调用。•onDetach():Fragment和Activity解除关联的时候调用。
布局技巧:
使用限定符(Qualifiers):通常平板采用的双页模式,左边子项列表,右边显示内容。就是在res的文件夹下创建一个layout-large文件放置一个要显示的名字相同的xml文件,就是当在一个大的屏幕的设备上显示的时候就调用layout-large中的xml布局文件,文件夹名中的large就是一个限定符,这个可以更灵活的为不同设备加载布局,利用这个可以在手机与平板上显示单双页的页面。
• Fragment 与Activity通信
碎片是嵌入到活动显示的,但碎片和活动有各自是独立的,没有明显的方式直接通信。
活动中得到相应碎片的实例:OneFragment oneFragment = (OneFragment)getFragmentManager().findFragmentById(R.id.oneFragment);
碎片中调用活动里的方法:MainActivity activity= (MainActivity)getActivity();
- android Fragment简介
- android碎片Fragment简介
- Android Fragment(一)---简介
- Android Fragment简介
- Android Fragment简介
- Android Fragment简介
- Android Fragment简介
- Android之Fragment使用简介
- Android入门之Fragment简介
- android碎片Fragment简介详解
- Android碎片Fragment使用简介
- android碎片Fragment简介详解
- Fragment的使用简介【Android】
- Android碎片Fragment使用简介
- Android之Fragment使用简介
- Android Fragment简介及生命周期
- android之Fragment简介和使用实例
- Fragment简介
- iOS中的静态库和动态库
- 10、scrapy1.3.0 中文教程
- 单调递增最长子序列 【DP】
- C++ string 使用注意
- c++抽象类、纯虚函数
- Android Fragment简介
- 【信源编码作业】1. 视音频数据的数据源分析
- 【题解】dutoj1081 Prufer 序列
- Mac系统安装和配置tomcat步骤详解
- 数据库简单授权机制
- 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- 【工作日志】--关于Vue.js中<slot>的使用方法及注意事项
- 润乾报表V5.0 在TOMCAT7.0服务器下的部署操作
- 线性表的并集操作