上一节我们讲到了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

【Android开发】之Fragment重要函数讲解的更多相关文章

  1. android开发中fragment获取context

    在用到fragment时无法使用.this来指定当前context内容,android开发中fragment获取context,可以使用getActivity().getApplicationCont ...

  2. Android开发:碎片Fragment完全解析fragment_main.xml/activity_main.xml

    Android开发:碎片Fragment完全解析   为了让界面可以在平板上更好地展示,Android在3.0版本引入了Fragment(碎片)功能,它非常类似于Activity,可以像 Activi ...

  3. Android 开发 之 Fragment 详解

    本文转载于 : http://blog.csdn.net/shulianghan/article/details/38064191 本博客代码地址 : -- 单一 Fragment 示例 : http ...

  4. Android开发学习—— Fragment

    #Fragment* 用途:在一个Activity里切换界面,切换界面时只切换Fragment里面的内容* 生命周期方法跟Activity一致,可以理解把其为就是一个Activity* 定义布局文件作 ...

  5. android开发系列之回调函数

    想必对于回调函数大家肯定不陌生,因为这是我们开发里面常用的代码技巧.我也就不废话了,让我们直接来看代码吧! public class TestCallback { public interface I ...

  6. Android开发:碎片Fragment完全解析fragment_main.xml/activity_main.xml(转)

    注明:这个转的,见谅未能标明原始出处 我们都知道,Android上的界面展示都是通过Activity实现的,Activity实在是太常用了,我相信大家都已经非常熟悉了,这里就不再赘述. 但是Activ ...

  7. android 开发 碎片Fragment布局例子(用按键切换碎片布局)

    实现思路: 1.写一个父类布局,里面写一个按键和一个帧布局(用于给Fragment布局后续替代) 2.写3个子布局,并且在写3个class继承Fragment布局 3.在MainActivity的cl ...

  8. android开发(41) Fragment中使用POP_BACK_STACK_INCLUSIVE达到一次跳转到栈底。类似Activity的 采用FLAG_ACTIVITY_CLEAR_TOP

    需求场景: 在开发中遇到下面这样场景: 1.创建 Fragment A 显示.  这时栈的结构是: .Fragment A 2.创建 Fragment B 并 显示.  从下到上看,这时栈的结构是: ...

  9. android开发(35) fragment和actionbar组合使用。解决不触发onOptionsItemSelected的问题,获得actionbar 的默认 get icon

    先说说我的使用场景: 我写了一个activity,使用了actionbar. 在这个activity中,有fragment,默认先打开一个 homeFragment,点击某个按钮会进入 detailF ...

随机推荐

  1. 移动硬盘插到台式机,外接网卡无法连接wifi处理

    在网上买了一个希捷500G的移动硬盘,避免供电不足,硬盘需要插到台式机后面,高高兴兴的通过USB连接了,发现硬盘可以用,然后打算网上查询是否正品,发现不能连接网络了,我是台式机,用360wifi作为无 ...

  2. kafka 数据一致性-leader,follower机制与zookeeper的区别;

    我写了另一篇zookeeper选举机制的,可以参考:zookeeper 负载均衡 核心机制 包含ZAB协议(滴滴,阿里面试) 一.zookeeper 与kafka保持数据一致性的不同点: (1)zoo ...

  3. ajax调用后台webservice返回JSON字符

    后台代码: [WebMethod] public static string LoginTest(string userCode, string password) { UserManageCente ...

  4. 美团 OCTO 分布式服务治理系统

    OCTO 是美团千亿调用量的分布式服务通信框架及服务治理的系统,可实现服务注册.服务自动发现.服务管理.容错处理.数据可视化.服务监控报警.服务分组等.本文总结了 OCTO 架构原理.Java 应用的 ...

  5. 在Docker环境下部署高可用的Eureka注册中心

    Eureka Server的同步遵循着一个非常简单的原则,只要有一条边将节点连接,就可以进行信息传播和同步 由于Eureka Server进行相互注册的方式来实现高可用的部署,所以我们只需要将Eure ...

  6. BZOJ2768 JLOI2012冠军调查(最小割)

    容易想到网络流.将每个人拆成0和1两个点.若某人值为0的话则让源连向0,否则让1连向汇,流量为1.相互认识的人之间01各自连边.跑最小割即可. #include<iostream> #in ...

  7. Exploring Pyramids UVALive - 3516 (记忆化DP)

    题意:给定一个序列 问有多少棵树与之对应 题目连接:https://cn.vjudge.net/problem/UVALive-3516 对于这一序列  分两种2情况 当前分支 和 其它分支  用df ...

  8. Day25-博客系统

    1. 搭建环境请参考:http://www.cnblogs.com/momo8238/p/7508677.html 2.创建3张表备用 models.py from django.db import ...

  9. MT【198】连乘积放缩

    (2018中科大自招最后一题)设$a_1=1,a_{n+1}=\left(1+\dfrac{1}{n}\right)^3(n+a_n)$证明:(1)$a_n=n^3\left(1+\sum\limit ...

  10. emWin 使用 GUIBuilder 放置标题 TEXT 注意

    @2018-7-10 13:27:16 emWin 使用 GUIBuilder 放置标题 “Scroll Compressor”,有居中显示要求,为了内容可在程序中方便更改且能达到自适应,应将其属性大 ...