Android Fragment 解析
2016-05-23 16:30
453 查看
Android是通过FragmentManager来管理Fragment,每次对Fragment进行添加和移除时需要开启事务,通过事务处理这些相应的操作,然后commit事务。
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction tx = fm.beginTransaction();
FragmentTransaction下管理Fragment的主要方法有add()、remove()、replace()、hide()、show()、detach()、attach()。
添加Fragment方式一:
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction tx = fm.beginTransaction();
tx.add(R.id.content, new Fragment1(),"Fragment1");
tx.commit();
这里是直接通过add将Fragment1绑定到id为content的View上。
添加Fragment方式二:
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction tx = fm.beginTransaction();
tx.replace(R.id.content, new Fragment1(),"Fragment1");
tx.commit();
这里使用replace来添加Fragment,replace的作用相当于是remove() + add() 组合后的作用。即使用replace会先移除掉当前id为content上的Fragment,这个被移除掉的Fragment就会被销毁掉(如果当前事务),然后通过add再把新的Fragment添加到View上。
(1)使用replace方式,相当于在对应id为content的FrameLayout上只有一层,那就是上面的Fragment1,通过replace这种方式,会把Fragment的生命周期再走一遍,如果我们的Fragment中有获取数据的操作的话,会频繁的去拉取数据;使用replace,Fragment绑定的视图一定会销毁,Fragment实例不一定会销毁,主要看有没有添加到回退栈。
(2)而通过add方式,我们可以在id为content的FrameLayout上添加多层,也即可以通过多次add来添加多个Fragment到FrameLayout上。这个时候,我们就可以配合hide()、show()方法来不断切换不同的Fragment。在我们通过add方式添加了Fragment到FrameLayout 的View上之后,通过hide()、show()来切换Fragment还有一个优势就是,当一个Fragment重新show展示出来的时候,它原来的数据还保留在该Fragment上,也就是说hide并不会销毁Fragment,只是单纯的隐藏了而已。
具体可以看这篇文章:http://blog.csdn.net/u010090644/article/details/47396201
在对Fragment进行管理前,需要开启一个事务,如下:
FragmentManager fm = getSupportFragmentManager();FragmentTransaction tx = fm.beginTransaction();
FragmentTransaction下管理Fragment的主要方法有add()、remove()、replace()、hide()、show()、detach()、attach()。
添加Fragment方式一:
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction tx = fm.beginTransaction();
tx.add(R.id.content, new Fragment1(),"Fragment1");
tx.commit();
这里是直接通过add将Fragment1绑定到id为content的View上。
添加Fragment方式二:
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction tx = fm.beginTransaction();
tx.replace(R.id.content, new Fragment1(),"Fragment1");
tx.commit();
这里使用replace来添加Fragment,replace的作用相当于是remove() + add() 组合后的作用。即使用replace会先移除掉当前id为content上的Fragment,这个被移除掉的Fragment就会被销毁掉(如果当前事务),然后通过add再把新的Fragment添加到View上。
(1)使用replace方式,相当于在对应id为content的FrameLayout上只有一层,那就是上面的Fragment1,通过replace这种方式,会把Fragment的生命周期再走一遍,如果我们的Fragment中有获取数据的操作的话,会频繁的去拉取数据;使用replace,Fragment绑定的视图一定会销毁,Fragment实例不一定会销毁,主要看有没有添加到回退栈。
(2)而通过add方式,我们可以在id为content的FrameLayout上添加多层,也即可以通过多次add来添加多个Fragment到FrameLayout上。这个时候,我们就可以配合hide()、show()方法来不断切换不同的Fragment。在我们通过add方式添加了Fragment到FrameLayout 的View上之后,通过hide()、show()来切换Fragment还有一个优势就是,当一个Fragment重新show展示出来的时候,它原来的数据还保留在该Fragment上,也就是说hide并不会销毁Fragment,只是单纯的隐藏了而已。
具体可以看这篇文章:http://blog.csdn.net/u010090644/article/details/47396201
相关文章推荐
- Android延时启动任务的方法
- Android自助餐之Jni(五)进阶
- android 笔记之代码混淆
- Android性能优化
- android 控件 getBackground().setAlpha设置透明值,影响其他页面样式问题
- 在Android M及更高版本中使用 Settings.System 抛出异常"You cannot keep your settings in the secure settings. "
- Android自助餐之XML
- android 启动界面
- android 使用Bitmap压缩图片
- Android自助餐之adb使用场景
- Android自定义HorizontalScrollView打造超强Gallery效果
- 设计模式在Android源码的运用
- 对话框
- Android 中查看内存的使用情况集常用adb命令
- Android图片下载机制
- Android媒体库更新问题
- Android如何高效显示较大的Bitmaps
- android打包签名介绍
- 你需要知道的Android拍照适配方案
- Android Studio教程 简介与入门(资料比较旧,但有一定参考价值)