Fragment碎片

2016-12-29  本文已影响0人  思维线

        为了让界面可以在平板上更好地展示,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、静态加载:

上一篇 下一篇

猜你喜欢

热点阅读