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()方法

相關文章
相關標籤/搜索