安卓漫漫路之碎片Fragment不同包下的区别.

来源:互联网 发布:ubuntu配置tomcat环境 编辑:程序博客网 时间:2024/05/29 14:53

Fragment简介: (碎片)


在最初的时候,咱们如果要想显示多个布局,只能创建多个activity跳转来达到咱们想要的效果.但是Fragment控件出来之后,果然不负众望.他使一切变的美好华丽又简单,咱们可以认为Fragment就是Activity的一个界面的一个组成部分(必须依存于Activity,因此Activity的生命周期会直接影响到Fragment的生命周期).当Activity写好帧布局之后,咱们就可以创建咱们想要的Fragment布局来填充到Activity中来展示.并且可以通过控制FragmentTransaction(Fragment事务管理者,得到FragmentManager之后通过fm.beginTransaction()得到)提交不同的事务来动态的添加,替换和移除某个Fragment.达到展示多个布局的效果.
Activity的界面可以有完全不同的Fragment组成,并且Fragment拥有自己的生命周期和接收、处理用户的事件,这样就不必在Activity写一堆控件的事件处理的代码了.


Fragment有两个包:android.support.v4.app.fragment包和android.app.fragment

功能都是一样的,但是有些API是有区别的,例如: 

-----------------------------------------------------------------------------------------------------------------------

其一: 手机系统版本区别:

· android.support.v4.app.fragment包是为可以向下兼容至1.6系统.

· android.app.fragment包是3.0系统以后的才能使用的,不过这也无所谓了,随着人们对科技不断的追求,NDK研发人员不断的努力,系统会越来越高越来越好.16年10月份左右7.0都开始公测了. 

-----------------------------------------------------------------------------------------------------------------------
其二: 管理Fragment的主Activity区别:

· android.support.v4.app.fragment包下的需要继承FragmentActivity,否则(java.lang.ClassCastException)

· android.app.fragment包下的照样继承Activity

-----------------------------------------------------------------------------------------------------------------------
其三: 对FragmentManager的获取区别:

· android.support.v4.app.fragment包下需要使用getSupportFragmentManager()来获取管理,代码如下:

  FragmentManager fm = getSupportFragmentManager();

· android.app.fragment包下需要使用getFragmentManager(),如下:

  FragmentManager fm = getFragmentManager();
-----------------------------------------------------------------------------------------------------------------------
其四: 强调FragmentTrancation.commit:

简介: 熟悉数据库的同学都知道,事务指的就是一种原子性、不可拆分的操作。所谓的Fragment事务就是:对Fragment进行添加、移除、替换或执行其它动作,提交给Activity的每一个变化。这就是Fragment事务。

通过FragmentManager.beginTransaction()我们可以开始一个事务。
在事务中,我们可以对Fragment进行的操作以及对应的方法如下:
添加:add()
移除:remove()
替换:replace()
提交事务:commit()
上面几个是比较常用的,还有attach()、detach()、hide()、addToBackStack()等方法。
我们需要注意的是,Fragment以ID或Tag作为唯一标识,所以remove和replace的参数是Fragment,这个Fragment目标Fragment一致(必须是相同的包,否则会编译时异常)。

------------------------------------------------------------------------------------------------------------------------




如有问题请多指正,您的指正使我更我正确的前行.



3 0
原创粉丝点击