Fragment-FragmentMannager中的方法

1. 繼承關係

java.lang.Object
    |____android.app.FragmentManager

2. 類概要

這個類提供了與Activity內部的Fragment對象進行交互的接口。

雖然FragmentManager的API是在HONEYCOMB的版本中被引入的,但是在舊的平臺上還有一個通過FragmentActivity類來使用的API版本。

HONEYCOMB:http://developer.android.com/reference/android/os/Build.VERSION_CODES.html#HONEYCOMB

3. 類說明

嵌套(內部)類

interface FragmentManager.BackStackEntry
代表了Fragment回退堆棧的一個項目實體,調用FragmentTransaction.addToBackStack()方法時會創建這個項目實體。

interface FragmentManager.OnBackStackChangedListener
觀察回退堆棧變化的接口


常量
public static final int POP_BACK_STACK_INCLUSIVE
針對popBackStack(String, int)和popBackStack(int, int)方法所設置的標記。如果在調用這兩個方法時,設置了這個標記,並且已經提供了回退堆棧中項目實體的名稱或ID,那麼堆棧中所有匹配的項目實體都會被消耗,直到沒有匹配的,或到達堆棧的底部爲止。


常量值:1(0x00000001)
Public 構造器
FragmentManager()
Public 方法


public abstract void addOnBackStackChanageListener(FragmentManager.OnBackStackChangedListener)
添加一個新的監聽器,用於監聽Fragment回退堆棧的變化。


public abstract FragmentTransaction beginTransaction()
啓動一個跟FragmentManager關聯的一系列的與Fragment對象相關的編輯操作。

注意:一個Fragment事務只能在Activity保存其狀態期間被創建/被提交。如果在Activity.onSaveInstanceState()方法調用之後,提交事務則會發生錯誤。這是因爲系統框架需要保存當前Fragment對象的狀態,並且如果在狀態保存之後來改變Fragment,那麼改變的結果也會丟失。


public abstract void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args)
把FragmentManager的狀態打印輸出到給定的流中。

參數:
prefix--->在每行文本的前面要打印輸出的文本。
fd--->要輸出的轉存文件的描述。
writer--->給轉存操作設置的一個PrintWriter對象。
args--->給轉存請求提供一組額外的參數。


public static void enableDebugLogging(boolean enabled)
控制是否打開框架內Fragment管理器的調試日誌(log)。如果開啓調試日誌,那麼就會在Logcat中看到框架執行Fragment操作的日誌信息。


public abstract boolean executePendingTransactions()
在用FragmentTransaction.commit()方法提交FragmentTransaction對象後,會在進程的主線程中,用異步的方式來執行。如果想要立即執行這個等待中的操作,就要調用這個方法(只能在主線程中調用)。要注意的是,所有的回調和相關的行爲都會在這個調用中被執行完成,因此要仔細確認這個方法的調用位置。

返回值:如果等待中的事務被執行,那麼就會返回true。


public abstract Fragment findFragmentById(int id)
這個方法用於查找由給定的id所標識的那個Fragment對象。這個id既可以是源自佈局填充時的XML,也可以是添加事務時的容器ID。這個方法首先會搜索被添加到當前管理的Activity中的Fragment對象,如果沒有找到,它會搜索當前回退堆棧中所有的Fragment對象,以便找到跟這個ID匹配的Fragment對象。

返回值:如果找到,則返回一個Fragment對象,否則返回null。


public abstract Fragment findFragmentByTag(String tag)
這個方法用於查找由給定的標籤所標識的一個Fragment對象,這個標籤既可以源自佈局填充時XML,也可以是在添加事務時所提供的。這個方法首先會搜索被添加到當前管理的Activity中的Fragment對象,如果沒有找到,它會搜索當前回退堆棧中所有的Fragment對象,以便找到跟這個標籤匹配的Fragment對象。

返回值:如果找到,則返回一個Fragment對象,否則返回null。


public abstract FragmentManager.BackStackEntry getBackStackEntryAt(int index)
這個方法返回回退堆棧中由index索引所標識的BackStackEntry對象,索引0指向堆棧底部的實體對象。


public abstract int getBackStackEntryCount()
返回回退堆棧中當前實體對象的數量。


public abstract Fragment getFragment(Bundle bundle, String key)
返回最近一次用putFragment(Bundle, String, Fragment)方法放置的Fragment對象實例。


參數:
bundle--->制指定要從哪個Bundle對象中獲取Fragment引用。
key--->指定Bundle對象中實體對象的名稱。

返回值:返回跟給定引用關聯的當前Fragment對象實例。


public void invalidateOptionsMenu()
必要的時候,讓依附於Activity的選項菜單失效。直到Activity轉移到恢復(resumed)狀態,這種失效狀態纔會被終止。


public abstract void popBackStack()
把頂部的狀態彈出回退堆棧。這個方法是異步執行的。它會按照請求的順序來執行彈出操作,但是這個操作直到應用程序把控制權返回給事件循環之後,才能夠執行這個操作。


public abstract void popBackStack(String name, int flags)
從管理器的Fragment回退堆棧中把最後放入的由name參數所指定的Fragment對象彈出。這個函數是異步的,它會按照請求的順序來執行彈出操作,但是直到應用程序把控制權返回給事件循環之後,纔會執行這個操作。


參數:
name--->如果這個參數是非空的,那麼就要在回退堆棧中查找這個名稱所指向的Fragment對象。如果找到,那麼這個狀態之上的所有狀態都會被彈出。POP_BACK_STACK_INCLUSIVE標記能夠用於控制命名狀態本身是否要被彈出。如果這個參數是null,則只有頂部狀態會被彈出。
flags--->既可以是0,也可以是POP_BACK_STACK_INCLUSIVE。


public abstract void popBackStack(int id, int flags)
把給定ID標識所指定的狀態之上的所有狀態都彈出回退堆棧。這個方法是異步,它會按照請求的順序來執行彈出操作。但是直到應用程序把控制權返回個事件循環之後纔會執行這個操作。


參數:
id--->這個參數設定了要彈出的狀態的標識。如果被標識的狀態不存在,則什麼也不做。POP_BACK_STACK_INCLUSIVE標記能夠用於控制id所標識的狀態本身是否會被彈出堆棧。
flags--->即可以是0,也可以是POP_BACK_STACK_INCLUSIVE。


public abstract boolean popBackStackImmediate(int id, int flags)
與popBackStack(int, int)方法類似,但是在這個調用的內部,會立即執行彈出操作。就像調用executePendingTransactions()方法之後的效果一樣。
返回值:如果彈出了某些狀態,則返回true,否則返回false。

public abstract boolean popBackStackImmediate(String name, int flags)
與popBackStack(String, int)方法類似,但是在這個調用的內部,會立即執行彈出操作。就像調用executePendingTransactions()方法之後的效果一樣。
返回值:如果彈出了某些狀態,則返回true,否則返回false。

public abstract boolean popBackStackImmediate()
與popBackStack()方法類似,但是在這個調用的內部,會立即執行彈出操作。就像調用executePendingTransactions()方法之後的效果一樣。
返回值:如果彈出了某些狀態,則返回true,否則返回false。

public abstract void putFragment(Bundle bundle, String key, Fragment fragment)
把一個指定的Fragment對象放入一個Bundle對象中。這個Bundle對象能夠作爲持久的狀態來保存,並且在後續的調用getFragment(Bundle, String)方法來恢復的時候,它會返回一個與當前實例相同的Fragment對象。

參數:
bundle--->這個參數指定了一個Bundle對象,方法執行時,會把指定的Fragment對象引用放到這個Bundle對象中。
key--->這參數指定在Bundle對象中這個實體的名稱。
fragment--->這個參數指定要保存的Fragment對象的引用。


public abstract void removeOnBackStackChangedListener(FragmentManager.OnBackStackChangedListener listener)
刪除之前用addOnBackStackChangedListener(OnBackStackChangedListener)方法添加的一個監聽器。


public abstract Fragment.SavedState saveFragmentInstanceState(Fragment f)
存給定的Fragment對象的當前狀態。在創建一個新的Fragment對象實例,並且把它添加到Fragment管理器中之後,能夠使用這個方法來創建一個跟Fragment對象的當前狀態匹配的狀態對象。使用這個方法時要注意以下限制:

1. Fragment對象必須跟當前的FragmentManager對象綁定;
2. 使用這個被保存的狀態來創建一個新的Fragment對象,必須與創建這個狀態的Fragment對象有相同的類類型。
3. 被保存的狀態不能包含對其他的Fragment對象依賴,也就是說,不能使用putFragment(Bundle, String, Fragment)方法來保存一個Fragment對象的引用,因爲這個引用這個引用在後續使用時可能是無效的。同樣Fragment對象的目標和結果代碼也不能包含在這個要保存的狀態中。
參數:

f--->要保存狀態的Fragment對象。
返回值:生成的狀態對象,如果沒有感興趣的由Fragment所創建的狀態,那麼這個方法會返回null。

 

 

參考:http://blog.csdn.net/duguang77/article/details/24248879

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