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一致(必须是相同的包,否则会编译时异常)。

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




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



更多相关文章

  1. 实现微信布局的四种方式(一)
  2. 无法将视图添加到相对布局
  3. findViewById()返回布局XML中自定义组件的null,而不是其他组件
  4. Android自定义View-----上下拖动布局--SlideContentLayout
  5. 图形布局和实际设备上的布局不同
  6. Android 软键盘弹出时把原来布局顶上去的解决方法
  7. TransactionSystemException:无法提交JPA事务;

随机推荐

  1. android打电话的程序
  2. Android 手机bluetooth 名字的设置
  3. android 学习之---Android之SurfaceView
  4. android图片压缩方法
  5. popup menu案例,无说明只代码
  6. android 系统internt
  7. Android属性动画 Property animation
  8. 删除android默认APK的方法
  9. Android编译系统详解(二)
  10. Android 下载文件至SD卡,并用progressBar