为了让界面可以在平板上更好地展示,Android在3.0版本引入了Fragment(碎片)功能,它非常类似于Activity,可以像Activity一样包含布局。Fragment通常是嵌套在Activity中使用的,现在想象这种场景:有两个Fragment,Fragment 1包含了一个ListView,每行显示一本书的标题。Fragment 2包含了TextView和ImageView,来显示书的详细内容和图片。
Fragment特点:
Fragment是Android3.0后引入的一个新的API,他出现的初衷是为了适应大屏幕的平板电脑, 当然现在他仍然是平板APP UI设计的宠儿,而且我们普通手机开发也会加入这个Fragment, 我们可以把他看成一个小型的Activity,又称Activity片段!想想,如果一个很大的界面,我们 就一个布局,写起界面来会有多麻烦,而且如果组件多的话是管理起来也很麻烦!
而使用Fragment 我们可以把屏幕划分成几块,然后进行分组,进行一个模块化的管理!从而可以更加方便的在 运行过程中动态地更新Activity的用户界面!
另外Fragment并不能单独使用,他需要嵌套在Activity 中使用,尽管他拥有自己的生命周期,但是还是会受到宿主Activity的生命周期的影响,比如Activity 被destory销毁了,他也会跟着销毁!
Fragment使用:
首先需要注意,Fragment是在3.0版本引入的,如果你使用的是3.0之前的系统,需要先导入android-support-v4的jar包才能使用Fragment功能。
加载方式有两种:
1、动态加载:
动态添加Fragment主要分为4步:
1、获取到FragmentManager,在Activity中可以直接通过getFragmentManager得到。
2、开启一个事务,通过调用beginTransaction方法开启。
3、向容器内加入Fragment,一般使用replace方法实现,需要传入容器的id和Fragment的实例。
4、提交事务,调用commit方法提交。
图解:
FragmentManager:
要管理activity中的fragments,你就需要使用FragmentManager。
通过getFragmentManager()或getSupportFragmentManager()获得
例:fm = getSupportFragmentManager();
fa = new Fragment_A();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.rl, fa);
ft.commit();
FragmentTransaction一般用来对当前的Fragment进行管理,常用的针对Fragment的方法有:
1、将一个fragment实例添加到Activity的最层、add(int containerViewId, Fragment fragment);
例:
2、将一个fragment实例添加到Activity的最上层add(int containerViewId, Fragment fragment);
3、将一个fragment实例从Activity的fragment队列中删除
4、remove(Fragment fragment);
5、替换containerViewId中的fragment实例,注意,它首先把containerViewId中所有fragment删除,然后再add进去当前的fragment
6、replace(int containerViewId, Fragment fragment);
例:
hide()、show()public FragmentTransaction hide(Fragment fragment);//将指定的fragment隐藏不显示public FragmentTransaction show(Fragment fragment);//将以前hide()过的fragment显示出来
例:
2、静态加载:
网友评论