android fragment 详解(二)
来源:互联网 发布:淘宝美工招聘兼职 编辑:程序博客网 时间:2024/06/06 17:29
继续上篇文章,上篇文章主要讲解了fragment和activity相结合的生命周期,本篇文章将从fragment的实际操作开始,首先讲解fragment的基本操作
(一):fragment的静态和动态的使用
(二):fragment的事物处理
(三):fragment的回退栈
(四):没有布局的fragment有什么作用
(五):fragment如何与activity进行交互
(六):fragment如何进行创建对话框
由于知识点很多,如果此片文章没有进行完全讲解完成,后续我会继续写文章继续讲解,
fragment的动态和静态的使用
静态使用fragment是最简单的一种使用方式,就是把fragment当时一个View进行显示,就想我们用inflate进行加载一个如外的布局一样,首先新建一个类 继承fragment,在firstFragment之中新加载一个布局,
此时fragment写好了之后就要考虑写activity,如何把fragment的新布局加载到activity之中,首先在activity的布局之中写一个
FrameLayout,并且把布局设置成全局的,在activity之中与fragment的新布局进行替换,
下面是activity之中的的代码
其中注释也写的很清楚,如果要兼容Android API 11一下的版本,FragmentManager中的包要用android.support.v4,activity要继承fragmentActivity,如果软件不考虑低版本,则不需要以上操作。
fragment的事务处理
每一个页面新建一个fragment,然后in性动态加载,点击进入每个页面的时候要进行判断此页面是否为空,因为fragment很有可能因为种种原因被系统回收,此时若不为空的时候进行加载,否则不进行加载,事务处理除了replace方法之外还有add()、hide():隐藏显示的fragment,仅仅是隐藏,并没有销毁,show():显示之前隐藏的fragment,detach():会将view从UI中移除,和remove不同的是,此时并不是完全移除,fragment依然由fragmentManager管理,attach():重建view视图,附加到UI上并且显示。
remove和detach有一点细微的区别,在不考虑回退栈的情况下,remove会销毁整个Fragment实例,而detach则只是销毁其视图结构,实例并不会被销毁。那么二者怎么取舍使用呢?如果你的当前Activity一直存在,那么在不希望保留用户操作的时候,你可以优先使用detach。
fragment回退栈
以上的代码中可以看到第86行中addToBackStack的方法就是添加到回退栈中,此时commit事务之后,按下返回键,页面会回到上一个界面,,,,,
如果回退栈过多,我们可以利用一下方法进行清除回退栈:
int num = getActivity().getSupportFragmentManager().getBackStackEntryCount();
for (int i = 0; i < num; i++) {
BackStackEntry backstatck = getActivity().getSupportFragmentManager().getBackStackEntryAt(i);
}
getActivity().getSupportFragmentManager().popBackStackImmediate(CreateGroupNameFragment.class.getName(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
即弹出Tag为CreateGroupNameFragment之上的所有(包括自身)的Fragment
popBackStackImmediate(name,flag);
本篇博客只写了三个内容,剩余的下面博客讲继续讲解。。。。。
第二个参数:只能是 0 或者 1(POP_BACK_STACK_INCLUSIVE);
第一个参数为null时,第二个参数为0时:会弹出回退栈中最上层的那一个fragment。因为经测试,回退栈中的fragment个数减少了一个。第二个参数为1时:会弹出所有回退栈中的fragment。因为经测试,回退栈中的fragment个数变为0了。
- android fragment 详解(二)
- android Fragments详解二:创建Fragment
- android Fragments详解二:创建Fragment
- android Fragments详解二:创建Fragment
- android Fragments详解二:创建Fragment
- android Fragments详解二:创建Fragment .
- android Fragments详解二:创建Fragment
- android Fragments详解二:创建Fragment
- android Fragments详解二:创建Fragment
- Android Fragments详解二:创建Fragment
- android Fragments详解二:创建Fragment
- android Fragments详解二:创建Fragment
- Android Fragment详解(二):Fragment创建及其生命周期
- Android Fragment详解(二):Fragment创建及其生命周期
- Android Fragment详解(二):Fragment创建及其生命周期
- Android Fragment详解(二):Fragment创建及其生命周期
- Android Fragment详解(二):Fragment创建及其生命周期
- Android Fragment详解(二):Fragment创建及其生命周期
- 外联接、自联接与联合
- hexo配置主题发表文章
- Linux中固定ip地址
- PASSION之CSS3中2D,3D转化
- 快排三路划分
- android fragment 详解(二)
- poj2718
- JavaScript字符串函数
- STL中的内存分配器 (一)
- 程序员文史综合
- lua调试器与编辑器开源项目luacode(源自decoda)
- coursera的经历感想
- C++位操作
- 静态分配和动态分配