美文网首页
Fragment碎片

Fragment碎片

作者: 思维线 | 来源:发表于2016-12-29 19:42 被阅读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、静态加载:

    相关文章

      网友评论

          本文标题:Fragment碎片

          本文链接:https://www.haomeiwen.com/subject/kbbrpttx.html