【Android開發】之Fragment重要函數講解


  

  上一節我們講到了Fragment的生命周期(都是基於android.support.v4.app包下的Fragment),學習之后相信大家對它的生命周期有了很深入的了解了,如果還有不懂得,可以再看一下,傳送門。現在我們來講一下有關Fragment的常用函數。

 

  一、Fragment對象

    1.void setArguments(Bundle args);  這個函數為Fragment提供構造參數(也就是數據),參數以Bundle類型封裝。因為官方不建議把數據的傳遞提供寫在構造函數當中,因此提供了這個方法。

 

    2.Bundle getArguments();  通過這個函數可以獲取到傳遞給Fragment的參數。可以再Fragment當中直接調用,獲取傳遞的數據。

 

    3.FragmentActivity getActivity();  返回和當前Fragment關聯的FragmentAcitivty對象。

 

    4.FragmentManager getChildFragmentManager();  返回內嵌在當前Fragment當中的FragmentManager,用於管理內嵌在當前的Fragment的Fragments。

 

    5.FragmentManager getFragmentManager();  返回和當前Fragment平行的FragmentManager,用於管理和當前Fragment平行的Fragments。

 

    6.Fragment getParentFragment ();  返回包含當前Fragment的父Fragment。

 

    7.void onActivityCreated(Bundle savedInstanceState);  當Fragment綁定的Activity創建的時候調用。

 

    8.void onAttach(Activity activity);  當Fragment綁定到Activity的時候調用,這是Fragment生命周期第一次調用的函數。

 

    9.void onDestroy();  當Fragment不再使用的時候調用。

 

    10.void onDestroyView();  當視圖和Fragment分離的時候調用。

 

    11.void onInfate(Activity activity, AttributeSet attrs, Bundle savedInstanceState);  有同學可能注意到,為什么不會調用這個函數呢?這個函數只有當你的Fragment寫在XML布局文件中顯示的時候,該函數才會調用,並且這個函數調用在onAttach之前。

 

 

  二、FragmentManager對象

    1.void addOnBackStackChangedListener(FragmentManager.OnBackStackChangedListener listener);  為Fragment的后台堆棧添加一個監聽器,用於監聽堆棧的改變情況。

 

    2.FragmentTransaction beginTransaction();  開啟一個事務,用於Fragment的一系列處理。

 

    3.Fragment findFragmentById(int id);  通過Fragment的ID找到Fragment,這個ID可以是XML中的也可以是通過事務動態添加進去的。

 

    4.Fragment findFragmentByTag(String tag);  通過Fragment的Tag找到Fragment,這個Tag可以是XML中的也可以是通過事務動態添加進去的。

 

    5.FragmentManager.BackStackEntry getBackStackEntryAt(int index);  根據序號返回后台堆棧中的BackStackEntry對象,最底的序號為0。

 

    6.int getBackStackEntryCount();  返回堆棧的總數目。

 

    7.void popBackStack();  彈出堆棧中的一個並且顯示,也就是代碼模擬按下返回鍵的操作。

 

    8.void popBackStack(String name, int flags); 針對第一個參數,如果name為null,那么只有頂部的狀態被彈出;如果name不為null,並且找到了這個name所指向的Fragment對象;根據flags的值,如果是flag=0,那么將會彈出該狀態以上的所有狀態;如果flag=POP_BACK_STACK_INCLUSIVE,那么將會彈出該狀態(包括該狀態)以上的所有狀態。

 

    9.void popBackStack(int id, int flags);  針對第一個參數,如果該id找不到,那么什么都不做;否則根據flags的值,如果是flag=0,那么將會彈出該狀態以上的所有狀態;如果flag=POP_BACK_STACK_INCLUSIVE,那么將會彈出該狀態(包括該狀態)以上的所有狀態。

 

    10.boolean popBackStackImmediate (int id, int flags);  和popBackStack(int id, int flags)類似,不同的是這個事立馬彈出,和executePendingTransactions()方法之后的效果一樣。如果有東西彈出,返回為true;否則就是false。

 

    11.boolean popBackStackImmediate (String name, int flags);  和popBackStack(String name, int flags)類似,不同的是這個事立馬彈出,和executePendingTransactions()方法之后的效果一樣。如果有東西彈出,返回為true;否則就是false。

 

    12.boolean popBackStackImmediate();  與popBackStack()方法類似,其他參考上面兩個。

 

    13.void removeOnBackStackChangedListener (FragmentManager.OnBackStackChangedListener listener);  移除監聽堆棧的監聽器。

 

  三、FragmentTransaction對象

    1.FragmentTransaction add(Fragment fragment, String tag);  通過調用add(int, Fragment, String)方法,傳入containerViewId為0。

 

    2.FragmentTransaction  add(int containerViewId, Fragment fragment);  通過調用add(int, Fragment, String)方法,傳入tag為null。

 

    3.FragmentTransaction add(int containerViewId, Fragment fragment, String tag);  添加一個Fragment到Activity中。

 

    4.FragmentTransaction addToBackStack(String name);  添加這個Fragment到后台堆棧中。

 

    5.FragmentTransaction  attach(Fragment fragment);  在fragment detach之后再次綁定到視圖當中。

    

    6.int commit();  提交事務,后台執行事務的操作。

 

    7.int commitAllowingStateLoss();  和commit()差不多,但是在Activity狀態保存了之后執行commit()。

 

    8.FragmentTransaction detach(Fragment fragment);  從UI中解除Fragment的綁定。

 

    9.FragmentTransaction remove(Fragment fragment);  移除一個已經存在了的Fragment。

 

    10.FragmentTransaction  replace(int containerViewId, Fragment fragment, String tag);  替換一個已經存在了的Fragment(先remove,在add)。

    

    11.FragmentTransaction replace(int containerViewId, Fragment fragment);  調用replace(int containerViewId, Fragment fragment, String tag),但是tag為null。

 

    12.FragmentTransaction setCustomAnimations(int enter, int exit, int popEnter, int popExit);  設置進入/退出的動畫效果(資源文件)。這個必須位於replace、add、remove之前,否則效果不起作用。四個參數分別表示:添加、移除、從Backstack中pop出來、進入的動畫效果。

 

    13.FragmentTransaction  setCustomAnimations(int enter, int exit);  設置進入退出的動畫效果。

 

    14.FragmentTransaction setTransition(int transit);  設置切換效果。目前API提供:TRANSIT_NONE、 TRANSIT_FRAGMENT_OPEN、TRANSIT_FRAGMENT_CLOSE三種。

 

    15.FragmentTransaction setTransitionStyle(int transit);  設置切換的風格。

    

    16.FragmentTransaction hide(Fragment fragment);  隱藏一個存在的Fragment。

 

    17.FragmentTransaction show(Fragment fragment);  顯示一個之前隱藏的Fragment。

  

  以上就是我認為Fragment開發當中很重要的函數,如果還有不懂得可以參考官方API:http://www.android-doc.com/reference/android/support/v4/app/FragmentManager.html

  接下來還會繼續講解Fragment的開發,歡迎關注,我的CSDN博客:http://blog.csdn.net/u010049692/article/details/38944867

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM