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了。

本篇博客只写了三个内容,剩余的下面博客讲继续讲解。。。。。


0 0