Fragment最基础的方法

fragment 是一个控件,却拥有像activity一样的生命周期

需要一个总的fragmentActivity来进行控制全部的fragment的使用,在这个activity的布局文件中要有一个framelayout的控件容器,来容纳fragment

fragment 有个oncrateview来生成fragment所需的布局文件,用的是inflater.inflate(R.layout...,container,false);

在fragmentactivity中用new 一个相应的fragment,然后获得fragmentmanager,然后用manager.beginTransaction()获得FragmentTransaction ,用transaction.replace(...,...),根据是否需要返回,来确定调用addToBackStack(String arg)方法

其中replace和add方法的区别在:

add 和 replace 影响的都只是界面,而控制回退的,是事务。

add 是把一个fragment添加到一个容器 container 里。

replace 是先remove掉相同id的所有fragment,然后在add当前的这个fragment。

在大部分情况下,这两个的表现基本相同。因为,一般,咱们会使用一个FrameLayout来当容器,而每个Fragment被add 或者 replace 到这个FrameLayout的时候,都是显示在最上层的。所以你看到的界面都是一样的。但是, 使用add的情况下,这个FrameLayout其实有2层,多层肯定要比一层的来得浪费,所以还是推荐使用replace。 当然有时候还是需要使用add的。比如要实现轮播图的效果,每个轮播图都是一个独立的Fragment,而他的容器FrameLayout需要add多个Fragment,这样他就可以根据提供的逻辑进行轮播了。

而至于返回键的时候,这个跟事务有关,跟使用add还是replace没有任何关系。

fragment也有onresume等方法,也可以和fragment进行通信,详细见面向接口编程一篇

时间: 2024-10-23 15:57:25

Fragment最基础的方法的相关文章

C#基础—匿名方法(Anonymous Mehod)

1.引入匿名方法 早在C# 2.0中就提出了匿名方法,实现了以一种内联的方式声明委托,在此之前,声明委托唯一的方法是"命名方法",虽然 C# 3.0 里有了lambda ,使得写内联代码更加简洁和方法,但是匿名方法依然有他的用处,匿名方法提供了可以忽略参数列表的能力. 2.匿名方法的使用和注意点 什么匿名方法?简单的理解就是没有定义名字的方法(其实编译器还是帮我们生成了一个方法).代码的实现就是把方法的定义和方法的实现内联到了一起. 先看个演示例子: 1 class Program 2

1.28 Java基础总结 ①方法重载②构造方法

1.28 Java基础总结 ①方法重载②构造方法 一.方法的重载在同一个类中,方法名相同,形参列表不同访问修饰符.返回类型和是否重载无关:按顺序对应的形参列表类型不同即可 二.构造器在类创建一个实例时被调用,构造方法只能用new关键字调用目的:初始化实例,初始化类属性(0,0.0,null,false)无返回值,和类名一致,用来构造对象作用:为对象分配内存, 创建并初始化成员变量(通过类创建,所以可以在static方法中调用构造方法) 返回引用,引用.属性:引用.方法(所以无返回值) 三.构造方

Android编程之Fragment动画加载方法源码详解

上次谈到了Fragment动画加载的异常问题,今天再聊聊它的动画加载loadAnimation的实现源代码: Animation loadAnimation(Fragment fragment, int transit, boolean enter, int transitionStyle) { 接下来具体看一下里面的源码部分,我将一部分一部分的讲解,首先是: Animation animObj = fragment.onCreateAnimation(transit, enter, fragm

js写基础insertAfter()方法

DOM没有提供insertAfter()方法,使用js写一个基础的insertAfter()方法. ? 1 2 3 4 5 6 7 8 9 10 11 12 <script type="text/javascript"> function insertAfter(newElement,targetElement){     var parent = targetElement.parentNode;     if(targetElement == parent.lastCh

附录A培训实习生-面向对象基础(3):方法重载

就上一篇代码而言,你如果写Cat cat = new Cat();会直接报错错误 : 1       “Cat”方法没有采用“0”个参数的重载 E:\大话设计模式学习\BigDesignPatterns\附录A培训实习生之面向对象基础\动物运动会\AnimalGames\Form1.cs       20     23     AnimalGames 原因就是必要给小猫起名字.如果当真需要不起名字也要生出小猫来,可以采用方法重载. 方法重载提供了创建同名的多个方法的能力,但这些方法需使用不同的参

SaltStack介绍——SaltStack是一种新的基础设施管理方法开发软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流

SaltStack介绍和架构解析 简介 SaltStack是一种新的基础设施管理方法开发软件,简单易部署,可伸缩的足以管理成千上万的服务器,和足够快的速度控制,与他们交流,以毫秒为单位.SaltStack提供了一个动态基础设施通信总线用于编排,远程执行.配置管理等等.SaltStack项目于2011年启动,年增长速度较快,五年期固定基础设施编制和配置管理的开源项目.SaltStack社区致力于保持盐项目集中.友好.健康.开放.  简单来说它的两大基础功能就是:配置管理.远程命令执行.剩下就是根据

Java基础02 方法与数据成员(转载)

对象中的数据成员表示对象的状态.对象可以执行方法,表示特定的动作. 此外,我们还了解了类(class).同一类的对象属于相同的类型(type).我们可以定义类,并使用该定义来产生对象. 调用同一对象的数据成员 方法可以调用该对象的数据成员.比如下面我们给Human类增加一个getHeight()的方法.该方法返回height数据成员的值: public class Test{    public static void main(String[] args){        Human aPer

Fragment中的setUserVisibleHint()方法调用

使用Fragment的时候难免会遇到想在视图可见与不可见之中做些操作,此时通常会想到类似Activity中的onResume()和onPause()方法.Fragment中也确实有这两个方法,然而亲测support.v4.Fragment中的这两个方法其实是执行的Activity的方法,也就是只有在Activity的可视性发生变化时才会调用.又从网上找到类似的方法,setUserVisibleHint(), 但是事实证明改方法也不见得就能满足需求,在Fragment中重写该方法系统并不会调用改方

OC基础之方法和参数的命名规范

以前学过C/C++/Java/C#语言的童鞋可能刚开始对于OC的方法和参数的命名规范大为不爽 举例来说,如下一个OC方法: - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 这个方法,如果在传统的C++编程语言中应该是: void tableViewCom