Fragment整理

一、Fragment父类

    Fragment的父类有两个,分别为android.app.Fragment和android.support.v4.app.Fragment。建议使用android.support.v4.app.Fragment。由于此Fragment在全部的android版本中能够保持一致。java

    在builid.gradle中添加了appcompat-v7库,v4也一块儿被添加了。因此不用重复添加android

    注意:在使用<fragment>标签在布局中添加fragment的时候,必定要设置id属性,不然会出现问题app

二、动态添加Fragment

    注意:fragment所要占据的位置,不能够使用<fragment>标签。不然没法达到想要的效果ide

    a、建立待添加的fragment实例布局

    b、获取FragmentManager,能够调用Activity对象的getSupportFragmentManager()gradle

    c、开启一个事务,经过调用fragmentManager对象的beginTransaction()开启ui

    d、向容器中添加或者替换fragment,调用replace()this

    e、提交事务。调用commit()spa

    具体的代码:code

/**
     * 
     * @param flag 是否将fragment添加到BackStack中
     *              以实现相似于Activity返回键,能够返回上一个Activity的效果
     * @param fragment 新fragment
     */
    public void replaceFragment(boolean flag,Fragment fragment){
        FragmentManager fragmentManager = this.getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.fragment_simple,fragment);
        if(flag) {
            fragmentTransaction.addToBackStack(null);
        }
        fragmentTransaction.commit();
    }

三、实现返回栈的效果

    对于效果的说明:

        相似于Activity,点击返回键,能够返回到上一个Activity

    具体的实现方法:

        在动态添加fragment后,调用fragmentTransaction.addToBackStack(null)便可

四、Fragment与Activity之间通讯

    a、在Activity中,使用FragmentManager对象的fragmentManager.findFragmentById()方法便可

    b、在Fragment中,调用getActivity()得到Activity对象

    c、Fragment之间,能够调用getActivity()得到Activity对象,而后在经过Activity对象使用FragmentManager对象的fragmentManager.findFragmentById()

五、Fragment状态

    a、运行状态:Fragment与Activity都处于运行状态

    b、暂停状态:Activity处于暂停状态,或者是另外一个未占满屏幕的Activity位于栈顶,Fragment也处于暂停状态

    c、中止状态:Activity处于中止状态,Fragment也处于中止状态。或者是Fragment被显示调用replace或remove方法,从Activity中移除,并调用了addToBackStack(null)。处于中止状态的Fragment对用户不可见,可能会被销毁。

    d、销毁状态:Activity被销毁,与之关联的Fragment也会被销毁。或者Fragment被显示调用replace或者remove方法,并无调用addToBackStack(null)

六、Fragment的生命周期

    参考地址:https://developer.android.com/guide/components/fragments?hl=zh-cn

    

七、Fragment的数据保存和恢复

    保存数据:调用onSaveInstanceState()方法

    恢复数据:调用onCreate()、onCreateView()和onActivityCreated()方法

相关文章
相关标签/搜索