Fragment的深入浅出
2015-12-23 09:45
197 查看
Fragment的深入浅出
1.Fragment的生命周期
![](https://img-blog.csdn.net/20151223094650748?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
可以看到Fragment比Activity多了几个额外的生命周期回调函数:
onAttach(Activity); //当Activity与Fragment发生关联时调用
onCreateView(LayoutInflater,ViewGroup,Bundle); //创建该Fragment的视图
onActivityCreate(bundle); //当Activity的onCreate();方法返回时调用
onDestoryView(); //与onCreateView相对应,当改Fragment被移除时调用
onDetach(); //与onAttach()相对应,当Fragment与Activity的关联被取消时调用
注意:除了onCreateView,其他的所有方法如果你重写了,必须调用父类对于该方法的实现。
2.Fragment常用的API:
Fragment常用的三个类:
android.app.Fragment 主要用于定义Fragment
android.app.FragmentManager 主要用于在Activity中操作Fragment
android.app.FragmentTransaction 保证一些列Fragment操作的原子性,熟悉事务这个词,一定能明白~
a、获取FragmentManage的方式:
getFragmentManager() // v4中,getSupportFragmentManager
b、主要的操作都是FragmentTransaction的方法
FragmentTransaction transaction = fm.benginTransatcion();//开启一个事务
transaction.add()
往Activity中添加一个Fragment
transaction.remove()
从Activity中移除一个Fragment,如果被移除的Fragment没有添加到回退栈(回退栈后面会详细说),这个Fragment实例将会被销毁。
transaction.replace()
使用另一个Fragment替换当前的,实际上就是remove()然后add()的合体~
transaction.hide()
隐藏当前的Fragment,仅仅是设为不可见,并不会销毁
transaction.show()
显示之前隐藏的Fragment
detach()
将此Fragment从Activity中分离,会销毁其布局,但不会销毁该实例
attach()
将从Activity中分离的Fragment,重新关联到该Activity,重新创建其视图层次
transatcion.commit()//提交一个事务
注意:常用Fragment的哥们,可能会经常遇到这样Activity状态不一致:State loss这样的错误。主要是因为:commit方法一定要在Activity.onSaveInstance()之前调用。
2.getSupportFragmentManager()和getChildFragmentManager()的区别:
在Fragment里面嵌套Fragment 的话,不要用[b]getSupportFragmentManager(),会在ViewPager中出现。有些Fragment 不会加载的情况。既ViewPager 加载 Fragment 空白页的情况。
3.FragmentPagerAdapter与FragmentStatePagerAdapter的区别 http://blog.csdn.net/hknock/article/details/46741573
[/b]
1.Fragment的生命周期
可以看到Fragment比Activity多了几个额外的生命周期回调函数:
onAttach(Activity); //当Activity与Fragment发生关联时调用
onCreateView(LayoutInflater,ViewGroup,Bundle); //创建该Fragment的视图
onActivityCreate(bundle); //当Activity的onCreate();方法返回时调用
onDestoryView(); //与onCreateView相对应,当改Fragment被移除时调用
onDetach(); //与onAttach()相对应,当Fragment与Activity的关联被取消时调用
注意:除了onCreateView,其他的所有方法如果你重写了,必须调用父类对于该方法的实现。
2.Fragment常用的API:
Fragment常用的三个类:
android.app.Fragment 主要用于定义Fragment
android.app.FragmentManager 主要用于在Activity中操作Fragment
android.app.FragmentTransaction 保证一些列Fragment操作的原子性,熟悉事务这个词,一定能明白~
a、获取FragmentManage的方式:
getFragmentManager() // v4中,getSupportFragmentManager
b、主要的操作都是FragmentTransaction的方法
FragmentTransaction transaction = fm.benginTransatcion();//开启一个事务
transaction.add()
往Activity中添加一个Fragment
transaction.remove()
从Activity中移除一个Fragment,如果被移除的Fragment没有添加到回退栈(回退栈后面会详细说),这个Fragment实例将会被销毁。
transaction.replace()
使用另一个Fragment替换当前的,实际上就是remove()然后add()的合体~
transaction.hide()
隐藏当前的Fragment,仅仅是设为不可见,并不会销毁
transaction.show()
显示之前隐藏的Fragment
detach()
将此Fragment从Activity中分离,会销毁其布局,但不会销毁该实例
attach()
将从Activity中分离的Fragment,重新关联到该Activity,重新创建其视图层次
transatcion.commit()//提交一个事务
注意:常用Fragment的哥们,可能会经常遇到这样Activity状态不一致:State loss这样的错误。主要是因为:commit方法一定要在Activity.onSaveInstance()之前调用。
2.getSupportFragmentManager()和getChildFragmentManager()的区别:
在Fragment里面嵌套Fragment 的话,不要用[b]getSupportFragmentManager(),会在ViewPager中出现。有些Fragment 不会加载的情况。既ViewPager 加载 Fragment 空白页的情况。
3.FragmentPagerAdapter与FragmentStatePagerAdapter的区别 http://blog.csdn.net/hknock/article/details/46741573
[/b]
相关文章推荐
- VS2015 窗口布局简介 其他版本也一样
- Intel Xeon CPU 命名规则
- Android Studio上用真机调试时,无法查看Logcat日志信息解决方法
- 常用正则
- 报告摘读-中国手机屏幕入口价值研究报告艾瑞咨询,2015
- <LeetCode OJ> Move Zeroes【283】
- 大幕拉开
- Python第三方库的安装方法
- Python游戏开发
- Oracle常用的OCI函数
- 【Linux】bool的使用
- JavaScript代码性能优化总结
- Objective-c语言_KVC
- Eclipse快捷键 10个最有用的快捷键
- LocationManager定位国内偏移,WGS-84、GCJ-02、BD-09之间转换
- 新AQI算法 之前算法错误
- Python ID3 DecisionTree
- Transfer Learning
- Yocto tips (10): Yocto hellworld 添加一个软件包
- 在Eclipse下debug 出现Source not found for ...