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。

更多相关文章

  1. Android(安卓)架构组件之---LifeCycle 详解
  2. android背景图片及状态切换
  3. Android文档学习05_网络1
  4. android handlerThread 的使用
  5. Android移动端音视频的快速开发教程(四)
  6. Android中Context详解——你所不知道的Context
  7. Android(安卓)View状态保存
  8. android的processLifeCycle
  9. android Watchdog 实现剖析

随机推荐

  1. c语言数据类型转换的方法
  2. c语言中“或”怎么表示?
  3. c语言怎么实现动态内存分配
  4. c语言二进制如何表示
  5. c语言中的关键字有哪些类型?
  6. c语言中long是什么意思
  7. c语言0x什么意思
  8. printf在c语言中什么意思
  9. c语言中void的含义
  10. c语言的基本组成单位是什么