说到fragment,是我刚学习Android开发的时候遇到的第二个当时觉得疑惑的点,第一个是抽屉菜单。不过后来用的少也就没有去详细的看。但是,只是自己用的少,并不是开发用的少。所以这次很想去详细的看看fragment。参考资料是鸿洋大神的博客(http://blog.csdn.net/lmj623565791/article/details/37970961)以及李宁编著的《Android开发权威指南》(非常推荐)
我主要去从下面几个方面去看fragment:
1、使用Fragment前准备——为什么使用fragment,Android的回退栈
2、Fragment的生命周期,在不同的生命期内我们可以做些什么
3、Fragment的创建方式1——静态创建
4、Fragment的创建方式2——动态创建
5、Activity与Fragment如何交互
6、使用DialogFragment
7、Fragment与ViewPager结合使用
一、为什么使用Fragment及Android的回退栈
Fragment是从Android3.0之后引入的,如果是2.x的版本需要导入v4包。因为3.0之后的android开始支持平板电脑,屏幕的尺寸越来越大,就算手机的屏幕也越来越自由(大)。这样,一些适合小屏幕的布局如果拿到大屏幕上用就会特别的难看。如果一个app同时支持手机和平板,那么需要写不同的布局文件以适应不同的环境。但是如果界面过多的话,就会显得复杂,控制这些布局的文件也会增多,不易维护。如果一个布局可以共享,还可以将相应的代码(主要Java代码)都封装起来,这样就可以实现高度的复用,不混乱利于维护。这就要使用fragment。
Fragment中文意思是“卡片”的意思,每一个fragment就像一个卡片一样,拥有自己的布局(UI),同时拥有自己的逻辑,并且拥有自己的生命周期。但是fragment必须要依赖窗口(Activity)生存,窗口的生命周期会影响fragment的生命周期。
那么在什么时候用?参考书里说明了四点:
1、逻辑共享
可以这么简单理解,同样的界面,虽然在手机和平板(大屏)上显示的方式或者呈现在眼前的效果不一样,但是里面的响应事件一样,也就是逻辑一样。
2、保存状态
有些或者很多Activity里面是需要用户输入的,如果我输入了,但是手机不小心从竖屏切到了横屏(Activity会销毁并重建),这样输入的就没了。如果需要保存还需要手写代码。但是如果状态比较多就会麻烦,并不易管理。而fragment可以解决这些问题。
3、回退导航
在Activity里,按back键是把该