Fragment 生命周期
Fragment必须嵌入在Acitivity中使用,因此Fragment的生命周期和它所在的Activity是密切相关的。
如果Activity是暂停状态,其中所有的Fragment都是暂停状态;如果Activity是stopped状态,这个Activity中所有的Fragment都不能被启动;如果Activity被销毁,那么它其中的所有Fragment都会被销毁。
但是,当Activity在活动状态,可以独立控制Fragment的状态,比如加上或者移除Fragment。
当这样进行fragment transaction(转换)的时候,可以把fragment放入Activity的back stack中,这样用户就可以进行返回操作。
但是,当Activity在活动状态,可以独立控制Fragment的状态,比如加上或者移除Fragment。
当这样进行fragment transaction(转换)的时候,可以把fragment放入Activity的back stack中,这样用户就可以进行返回操作。
使用Fragment时,需继承Fragment或Fragment的子类(DialogFragment,ListFragment,PreferenceFragment,WebViewFragment)
使用Fragment时,必须实现三个回调函数:
onCreate() 系统在创建Fragment的时候调用,用于初始化相关组件及一些即便是被暂停或是被停止时依然需要保留的东西.
onCreateView() 当第一次绘制Fragment的UI时调用,必须返回一个View,如果Fragment不提供UI可返回null.(如果是ListFragment的子类,默认返回一个ListView,不用自己实现该方法)
onPause() 当用户离开Fragment时第一个调用,用于提交一些变化,用户很可能不在返回来.
Fragment的UI
提供Fragment的UI必须实现onCreateView()方法
onCreateView()中container参数代表Fragment在Activity中的父控件,savedInstaceState提供了上一个实例的数据.
inflate()方法的三个参数: resourceID 指明了当前的Fragment对应的资源文件
父容器控件
表名是否连接该布局和器父容器控件
加载Fragment
Fragment被加载到Activity中时它会处在对应的ViewGroup中.
Fragment两种加载方式:
在Activity的layout中使用标签<fragment>声明
当系统创建这个Activity的布局文件时,系统会实例化每个fragment,并且调用他们的onCreateView()方法, 来获得相应fragment的布局,并将返回值插入fragment标签所在的地方
在代码中将它加入到指定的ViewGroup中
当Activity处于Running状态下,可在Activity的布局中动态地加入Fragment.
1. 通过getFragmentManager()获取到FragmentManager实例
2. 通过FragmentManager的beginTransaction()方法获取到FragmentTransaction实例
3. 创建对应Fragment对象
4. 通过FragmentTransaction的add()方法将对应的Fragment对象添加的相应的父容器中
5. 调用FragmentTransaction的commit()方法使得FragmentTransaction实例的改变生效