总结:
1、FragmentActivity 为了支持Honeycomb之前的版本
2 activity与fragment的区别:
- fragment的生命周期由Activity托管,是Activity内部的事~
3 在Activity中托管fragment两种方式:
- 添加fragment到Activity的布局文件xml中:简单,但不灵活,且将fragment及其师徒于Activity的视图绑定一起,在Activity的生命周期过长无法切换fragment
- 在Activity的代码动态添加fragment:唯一可以在运行时控制fragment的方式。使用方法如下:
- 1 定义xml布局文件
- 2 创建fragment java类,并在onCreateView中绑定布局
- 3 通过代码方式,连接布局文件中生成的组件:即通过FragmentManger来管理
4 动态绑定fragment布局方法中:
- Fragment.onCreate()方法是public,Activity.onCreate()方法是proctected
- fragment也有保存和获取状态的bundle
- fragment使用onCreateView方法来生成布局:如下图所示
- FragmentManger类具体管理fragment队列和fragment回退栈:使用代码如下
-
FragmentManager fm = getFragmentManager(); //或者getSupportFragmentManager()FragmentTransaction tx = fm.beginTransaction(); // 创建并返回FragmentTransaction 实例tx.add(R.id.id_content, mFOne, "ONE");tx.commit();
- tx.add(R.id.id_content, mFOne, "ONE"); 方法中第一个参数是视图资源id,主要有两点作用:
- 告知FragmentManager fragment视图应该出现在activity视图的什么地方
- 是告知FragmentManager队列中fragment的唯一标示符。
- 增加tx .add()、删除()、替换tx.replace() 。
-
回退栈FragmentTransaction.addToBackStack(String)。使用replace和tx.addToBackStack(null);将当前的事务添加到了回退栈,所以FragmentOne实例不会被销毁,但是视图层次依然会被销毁(比如有EditView里面输入的数据不会保存),即会调用onDestoryView和onCreateView。
- 如果想保存上一次数据则使用tx.hide(this); tx.add(),tx.addToBackStack
-
Fragment常用的三个类:
android.app.Fragment 定义Fragment
android.app.FragmentManager 主要用于在Activity中操作Fragment
android.app.FragmentTransaction 保证一些列Fragment操作的原子性
Fragment介绍的Blog:http://blog.csdn.net/lmj623565791/article/details/37970961