【Android开发】之Fragment重要函数讲解
上一节我们讲到了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重要函数讲解的更多相关文章
- android开发中fragment获取context
在用到fragment时无法使用.this来指定当前context内容,android开发中fragment获取context,可以使用getActivity().getApplicationCont ...
- Android开发:碎片Fragment完全解析fragment_main.xml/activity_main.xml
Android开发:碎片Fragment完全解析 为了让界面可以在平板上更好地展示,Android在3.0版本引入了Fragment(碎片)功能,它非常类似于Activity,可以像 Activi ...
- Android 开发 之 Fragment 详解
本文转载于 : http://blog.csdn.net/shulianghan/article/details/38064191 本博客代码地址 : -- 单一 Fragment 示例 : http ...
- Android开发学习—— Fragment
#Fragment* 用途:在一个Activity里切换界面,切换界面时只切换Fragment里面的内容* 生命周期方法跟Activity一致,可以理解把其为就是一个Activity* 定义布局文件作 ...
- android开发系列之回调函数
想必对于回调函数大家肯定不陌生,因为这是我们开发里面常用的代码技巧.我也就不废话了,让我们直接来看代码吧! public class TestCallback { public interface I ...
- Android开发:碎片Fragment完全解析fragment_main.xml/activity_main.xml(转)
注明:这个转的,见谅未能标明原始出处 我们都知道,Android上的界面展示都是通过Activity实现的,Activity实在是太常用了,我相信大家都已经非常熟悉了,这里就不再赘述. 但是Activ ...
- android 开发 碎片Fragment布局例子(用按键切换碎片布局)
实现思路: 1.写一个父类布局,里面写一个按键和一个帧布局(用于给Fragment布局后续替代) 2.写3个子布局,并且在写3个class继承Fragment布局 3.在MainActivity的cl ...
- android开发(41) Fragment中使用POP_BACK_STACK_INCLUSIVE达到一次跳转到栈底。类似Activity的 采用FLAG_ACTIVITY_CLEAR_TOP
需求场景: 在开发中遇到下面这样场景: 1.创建 Fragment A 显示. 这时栈的结构是: .Fragment A 2.创建 Fragment B 并 显示. 从下到上看,这时栈的结构是: ...
- android开发(35) fragment和actionbar组合使用。解决不触发onOptionsItemSelected的问题,获得actionbar 的默认 get icon
先说说我的使用场景: 我写了一个activity,使用了actionbar. 在这个activity中,有fragment,默认先打开一个 homeFragment,点击某个按钮会进入 detailF ...
随机推荐
- 解决局域网IP冲突
进入cmd ipconfig -all 查看现有IP,发现IP不是192.168.1.*的形式,而是192.168.0.*等异常 ipconfig -release 释放现有IP ipconfig ...
- java自定义注解学习(二)_注解详解
上篇文章,我们简单的实现了一个自定义注解,相信大家对自定义注解有了个简单的认识,这篇,这样介绍下注解中的元注解和内置注解 整体图示 内置注解 @Override 重写覆盖 这个注解大家应该经常用到,主 ...
- Pushlets 配置参数详解
基于 Pushlets 的消息推送设计 Pushlets 是通过长连接方式实现“推”消息的.推送模式分为:Poll(轮询).Pull(拉).本文围绕 Pull 模式进行设计. 原理 客户端发起请求 ...
- 学习《Unix/Linux编程实践教程》(2):实现 more
0.目录 1.more 能做什么? 2.more 是如何实现的? 3.实现 more 3.1 more01.c 3.2 more02.c 3.3 more03.c 1.more 能做什么? more ...
- MySQL索引类型,优化,使用数据结构
工欲善其事必先利其器 半藏说道:“若你在路途中遇到上帝,上帝也会被割伤.” 一.mysql 索引分类(默认使用B树结构)在数据库表中,对字段建立索引可以大大提高查询速度.通过善用这些索引,可以令 My ...
- 【题解】 P1879 玉米田Corn Fields (动态规划,状态压缩)
题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ...
- 动态规划DP的优化
写一写要讲什么免得忘记了.DP的优化. 大概围绕着"是什么","有什么用","怎么用"三个方面讲. 主要是<算法竞赛入门经典>里 ...
- 【bzoj3237】 Ahoi2013—连通图
http://www.lydsy.com/JudgeOnline/problem.php?id=3237 (题目链接) 题意 给出一个无向图,$Q$组询问,每次询问将原图断掉$C$条边后是否还连通. ...
- spring data jpa查询部分字段、多余附加字段
spring data jpa查询部分字段 第一种方法:使用 model 查询时转化 首先建立一个 model ,写上自己想要查询的字段,然后写上构造函数,这步很重要,因为spring jpa 转化时 ...
- Oracle 11g DRCP连接方式——基本原理
学习Oracle是一个复杂.繁琐的过程.在浩如烟海的Oracle官方资料.新特性.MOS资料和各种Internal知识面前,我们总是觉得力不从心.不知所措.但是,这往往也就是我们不断坚持.积累和追寻的 ...