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。

10-10 11:55:41.168: INFO/System.out(18368): AAAAAAAAAA____onAttach // 第一次進入,顯示TabA
10-10 11:55:41.168: INFO/System.out(18368): AAAAAAAAAA____onCreate
10-10 11:55:41.168: INFO/System.out(18368): AAAAAAAAAA____onCreateView
10-10 11:55:41.175: INFO/System.out(18368): AAAAAAAAAA____onActivityCreated
10-10 11:55:41.179: INFO/System.out(18368): AAAAAAAAAA____onStart
10-10 11:55:41.179: INFO/System.out(18368): AAAAAAAAAA____onResume
10-10 11:55:44.980: INFO/System.out(18368): AAAAAAAAAA____onPause // 從TabA切換到TabB(TabA調用onPause)
10-10 11:55:44.980: INFO/System.out(18368): Extra—- 1 checked!!!
10-10 11:55:44.996: INFO/System.out(18368): BBBBBBBBBBB____onAttach
10-10 11:55:44.996: INFO/System.out(18368): BBBBBBBBBBB____onCreate
10-10 11:55:44.996: INFO/System.out(18368): BBBBBBBBBBB____onCreateView
10-10 11:55:45.004: INFO/System.out(18368): BBBBBBBBBBB____onActivityCreated
10-10 11:55:45.004: INFO/System.out(18368): BBBBBBBBBBB____onStart
10-10 11:55:45.004: INFO/System.out(18368): BBBBBBBBBBB____onResume
10-10 11:55:52.062: INFO/System.out(18368): BBBBBBBBBBB____onPause // 從TabB切換到TabC(TabB調用onPause)
10-10 11:55:52.062: INFO/System.out(18368): Extra—- 2 checked!!!
10-10 11:55:52.082: INFO/System.out(18368): CCCCCCCCCC____onAttach
10-10 11:55:52.082: INFO/System.out(18368): CCCCCCCCCC____onCreate
10-10 11:55:52.086: INFO/System.out(18368): CCCCCCCCCC____onCreateView
10-10 11:55:52.090: INFO/System.out(18368): CCCCCCCCCC____onActivityCreated
10-10 11:55:52.090: INFO/System.out(18368): CCCCCCCCCC____onStart
10-10 11:55:52.090: INFO/System.out(18368): CCCCCCCCCC____onResume
10-10 11:56:06.535: INFO/System.out(18368): CCCCCCCCCC____onPause // 從TabC切換到TabB(TabC調用onPause)
10-10 11:56:06.535: INFO/System.out(18368): BBBBBBBBBBB____onResume // 從TabC切換到TabB(TabB調用onResume)
引用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章