FragmentManager
Class Overview
- android.support.v4.app.FragmentManager用于兼容3.0之前的版本。如果你使用的版本大于3.0,并且你使用的是 support包下的 FragmentManager ,那么框架并不会切换使用android.app.FragmentManager的实现方式。
- android.app.FragmentManager这个类提供了Fragment与 Activity 的交互接口,这里的 Activity 必须是从 FragmentActivity 中派发的子类。
Summary
Nested Classes | ||
---|---|---|
interface | FragmentManager.BackStackEntry | 表达了回退栈事件的实体,如调用FragmentTransaction.addToBackStack(). |
interface | FragmentManager.OnBackStackChangedListener | 监听回退栈变更接口 |
Constants
Constants | |
---|---|
POP_BACK_STACK_INCLUSIVE ConstantsValue= 0x00000001 | 针对 popBackStack(String, int) 与 popBackStack(int, int)设置的Flag常量; 若设置后则需提供BackStackEntry的 name 与 ID,之后FragmentManager 中所有与所提供的 name 或者 ID相匹配的BackStackEntry均会被消费掉,直至不存在匹配项或当前已是栈底。 |
Public Methods
Public Methods | |
---|---|
beginTransaction() | 将 Fragment 关联到FragmentManager ,标记对事务的编辑处于开始状态。 Note: A fragment transaction can only be created/committed prior to an activity saving its state. If you try to commit a transaction after FragmentActivity.onSaveInstanceState() (and prior to a following FragmentActivity.onStart or FragmentActivity.onResume(), you will get an error. This is because the framework takes care of saving your current fragments in the state, and if changes are made after the state is saved then they will be lost. |
dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) | 将 FragmentManager的当前状态使用指定流输出。 |
enableDebugLogging(boolean enabled) | 控制框架的内部FragmentManager是否打开调试日志。 |
executePendingTransactions() | 调用FragmentTransaction.commit()方法提交事务后,紧接着会执行该方法。 注意: 它在主线程调用,并在异步线程中执行。 |
findFragmentById(int id) | 当事务被提交后,可以使用给定的 ID来, 或在 XML中指定Fragment(硬编码),或是从指定的 container ID中匹配Fragment。 |
findFragmentByTag(String tag) | 当事务被提交后,可以使用给定的 Tag来, 或在 XML中指定Fragment(硬编码),或是从指定的 container ID中匹配Fragment。 |
getBackStackEntryAt(int index) | 给定 index 获取BackStackEntry。 注意:index 表示在回退栈中下标,并且0表示当前处于回退栈的底部。 |
getBackStackEntryCount() | 返回当前回退栈内持有BackStackEntry的实例个数。 |
getFragment(Bundle bundle, String key) | 检索当前Fragment的实例,前置条件是已经调用putFragment(Bundle, String, Fragment)存放实例。 |
isDestroyed() | 此处理解可能有误,敬请请各位指正。 当前 FragmentManager所附加的 Activity.onDestroy()执行后, 同时也表示当前的实例正式死亡。 |
popBackStack() | 栈顶出栈。 |
popBackStack(String name, int flags) | 从管理器的Fragment回退堆栈中把最后放入的由name参数所指定的Fragment对象弹出。 这个函数是异步的,它会按照请求的顺序来执行弹出操作, 但是直到应用程序把控制权返回给事件循环之后,才会执行这个操作。 |
popBackStack(int id, int flags) | 把给定ID标识所指定的状态之上的所有状态都弹出回退堆栈。 这个方法是异步,它会按照请求的顺序来执行弹出操作。 但是直到应用程序把控制权返回个事件循环之后才会执行这个操作。 |
popBackStackImmediate(int id, int flags) | 与 popBackStack(int, int)作用一致,唯一区别该方法立即执行。 |
popBackStackImmediate(String name, int flags) | 与 popBackStack(String, int)作用一致,唯一区别该方法立即执行。 |
popBackStackImmediate() | 与 popBackStack()作用一致,唯一区别该方法立即执行。 |
putFragment(Bundle bundle, String key, Fragment fragment) | 把一个指定的Fragment对象放入一个Bundle对象中。 这个Bundle对象能够作为持久的状态来保存,并且在后续的调用getFragment(Bundle, String)方法来恢复的时候, 它会返回一个与当前实例相同的Fragment对象。 |
saveFragmentInstanceState(Fragment f) | 保存给定的Fragment对象的当前状态。 在创建一个新的Fragment对象实例,并且把它添加到Fragment管理器中之后, 能够使用这个方法来创建一个跟Fragment对象的当前状态匹配的状态对象。 注意以下限制: 1. Fragment对象必须跟当前的FragmentManager对象绑定; 2. 使用这个被保存的状态来创建一个新的Fragment对象,必须与创建这个状态的Fragment对象有相同的类类型。 3. 被保存的状态不能包含对其他的Fragment对象依赖。 也就是说,不能使用putFragment(Bundle, String, Fragment)方法来保存一个Fragment对象的引用, 因为这个引用这个引用在后续使用时可能是无效的。 同样Fragment对象的目标和结果代码也不能包含在这个要保存的状态中。 |