文档库 最新最全的文档下载
当前位置:文档库 › fragment讲解

fragment讲解

fragment讲解
fragment讲解

1.Fragment简介

一个fragment代表activity活动中的一部分。你可以用多个Fragment去构建一个activity或者让一个fragment在多个activity中进行复用。你可以认为fragment是activity的一部分,这部分有自己的生命周期,可以接收各种响应时间,可以再activity运行的时候,动态的添加到activity中或者从activity 中移走。

Fragment总是嵌套在activity中的,而且fragment的生命周期和他的宿主activity紧密相连。例如,当宿主activity被暂停,那么所有的寄居在宿主activity中的fragment都将会暂停;如果宿主activity被销毁,那么寄居在宿主activity中的fragment都将会被销毁。但是当宿主还在运行中,你可以对fragment进行添加或者移除。当你执行完一个fragment的事物之后,你可以将fragment压入到一个有activity管理的back栈中。每一个back栈的入口处都是一个刚才运行过的fragment的一个记录。Back栈允许用户改变fragment记录弹出的顺序。

当你将fragment当成一个activity的一部分加入宿主activity的layout中的时候,它寄住一个ViewGroup中,位于activity的view的最顶层,并且fragment 需要定义自己的view layout。

你可以通过在activity的layout文件中插入一个fragment元素将fragment 加入到activity中,也可以再程序中动态的将 fragment加入到ViewGroup中。但是,fragment不是必须要成为activity布局的一本分,其也可以没有UI,无形的为activity服务。

2.设计理念

Android引进fragment主要是为了支持像在平板电脑上的大屏幕上设计动态和灵活的UI。因为平板电脑的界面比手机有更多的界面去部署可以和使用者交付的UI组件,fragment支持这种设计,并且不需要设计者去维护复杂的view级的变化。将activity的layout分开到各个fragment中,我们就可以再activity 运行的时候,改变activity的界面,并别可以将fragment的改变保存到back 栈中。

例如一个应用可以用一个fragment来显示可以阅读的文章的题目,一个fragment来显示文章的内容,两个fragment在同一个activity中协作工作。每一个fragment都有自己的生命周期,回调方法和时间处理程序。因此,这样就不用一个activity来显示标题,另外一个activity来读文章的内容。用户就

可以选择需要阅读的文章和阅读文章的内容在同一个activity。例如左下图。

你应该设计每一个fragment作为activity的可重用组件。因为这样每一个fragment都定义了自己的layout以及自己的行为和生命周期等属性,这样fragment就可以再多个activity中复用。因此我们在设计的时候,应该将fragment设计成为可以复用的组件,避免在一个fragment操作另外一个fragment。这样对改变不同fragment的组合以适应不同的屏幕相当的重要。当我们需要支持平板和手机的应用的时候,我们可以通过不同的layout来重用fragment让不同的屏幕显示出最优的效果。例如一个手机可能在多个fragment 不能够很好的显示的时候,就需要分开fragment去提供一个单独的UI。

3.创建一个Fragment

创建一个fragment,必须继承Fragment类(或者一个已经继承了fragment类的子类)。Fragment 类的代码和activity的代码非常的相似,它包含的回调方法也和activity的回调方法相似,例如:onCreate(),onStart(),onPause(),onStop();实际上如果你使用fragment将原来已经存在的应用进行改造,你可以将activity的回调方法的直接拷贝给fragment。

通常情况下,我们应该实现fragment的下面三个方法:

3.1. onCreate();

在fragment被创建的时候,系统调用这个方法。在我们的实现中,我们应该在这个方法中

3.2. onCreateView();

在fragment第一次画界面的时候,系统调用

这个方法。画fragment界面的时候,我们必须在

调用这个方法的时候返回一个View,这个view是

fragment的layout的根源。如果fragment没有

提供UI,返回null.

3.3. onPause();

当系统收到用户已经离开这个fragment的暗示的时候调

用这个方法(但是不总是意味着这个fragment已经销毁)。

通常的我们需要保存一些数据,并且在这之后我们还是需

呀继续保持这个会话(有可能用户永远也不会回来)。

大部分的应用程序都应该为fragment实现这三种

回调方法。但是这里有其他几个处理fragment的

生命周期的回调方法。所有的fragment的生命周

期中的回调方法都在Handling the Fragment Lifecycle

中进行详细讨论。

4.几个fragment的子类

这里仍然有几个fragment的子类你想要继承的。

4.1. DialogFragment

显示一个浮动的对话框。使用这个类来创建一个对话框能够很好的替代在activity中用对话框类方法创建对话框,因为你可以把一个fragment对话框回收到back栈中,允许用户返

回一个解除的fragment。

4.2. ListFragment

显示一个被adapter管理的list,和ListActivity非常的相似。他提供了几个管理list view的方法,例如回调方法onListItemClick()处理点击事件。

4.3. PreferenceFragment

将一簇preference以列表的形式显示出来,和PreferenceActivity相似,这对为你的应用创建一个“setting”activity非常的有用。

加入一个用户界面

一个fragment总是作为activity界面的一部分,并且将自己的界面提供给activity。

为fragment提供一个布局,当系统调用去画fragment的界面的时候,你必须实现onCreat eView()回调方法。实现的方法必须返回一个fragment的layout文件实现的一个view。

Note:如果你的类是ListFragment的子类,他的onCreateView()方法默认就返回了一个Li stView,因此就不需要去实现它。

为了从onCreateView方法中返回一个布局,你可以将layout文件inflate。为了这样,on CreateView方法提供了一个LayoutInflater类。

例如下面是一个fragment的子类,他从example_fragment.xml文件中导出布局。

public static class ExampleFragment extends Fragment{

@Override

public View onCreateView(LayoutInflater inflater,ViewGroup container,

Bundle savedInstanceState){

// Inflate the layout for this fragment

return inflater.inflate(https://www.wendangku.net/doc/614666437.html,yout.example_fragment, container,false);

}

}

Container参数传入的是fragment将要插入的activity的布局的ViewGroup。savedInsta nceState是一个Bundle,在fragment需要恢复的时候,用来提供fragment原来的数据。

Inflate()方法有三个参数,

●你想要inflate的xml资源的ID

●ViewGroup是父类的inflate布局。通过continer传递父类正在运行的view,对系统

适应通过inflate layout得到的view是非常重要的。

●一个布尔类型的值指定衍生出来的layout,在inflate过程中是否需要附属于ViewGro

up.(由于系统已经将衍生出来的layout插入到了continer,所以这里填写false;如果填写TRUE,将会创建一个多余的view).

5.将一个Fragment加入到Activity

通常作为Activity总体试图的一部分的fragment,其服务于主UI的一部分。这里有两种方法将fragment加入到activity的layout中:

5.1. 在activity的layout中定义fragment

如果fragment是一个view,在这种方法中,你可以为fragment指定layout属性。例如,下面是一个layout文件,其包含了两个fragment。

android:orientation="horizontal"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/list"

android:layout_weight="1"

android:layout_width="0dp"

android:layout_height="match_parent"/>

android:id="@+id/viewer"

android:layout_weight="2"

android:layout_width="0dp"

android:layout_height="match_parent"/>

在fragment中的android:name属性,指定了fragment在l ayout中实例化的类。

当系统创建activity试图的时候,它实例化每一个在layou t文件中进行说明的fragment,并且为每一个fragment调用on CreateView()方法来获取各自的layout。系统将创建的frag ment插入到原来activity布局中相应位置。Notes:每一个fragment都需要一个唯一的表示给系统,当宿主activity重启或者需要动态的添加或删除fragment的时候,系统才能够正确的找到相应的fragment。

这里有三种方法为fragment提供一个ID。

●提供一个唯一的android:id标签。

●提供一个唯一的android:tag标签。

●如果前面两个都提供,系统使用ID。

5.2. 使用编程的方式在一个已经存在的ViewGroup中添加

fragment

在你的activity在运行的时候,你可以向你的activity中添加fragment。你仅仅需要指定一个你想要替换的ViewGroup.

在activity中创建fragment活动(例如添加,移除,替换),需要使用FragmentTransaction 的API,从activity中获取FragmentTransaction的实例,如下:

FragmentManager fragmentManager = getFragmentManager()

FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

像activity中添加一个fragment使用add()方法,像一个view中插入一个指定的fragment的例子如下:

ExampleFragment fragment =new ExampleFragment();

fragmentTransaction.add(R.id.fragment_container, fragment);

https://www.wendangku.net/doc/614666437.html,mit();

第一个传递给add的参数为用id指定的想要放置fragment的view。第二个fragment为想要放置的fragment。

只要你已经让FragmentTrasaction发生了变化,就必须要调用commit方法让变化生效。

Android Fragment使用详解

Fragment(一) 1. 继承关系 https://www.wendangku.net/doc/614666437.html,ng.Object |__android.app.Fragment 实现接口:ComponentCallbacks2 View.OnCreateContextMenuListener 引入版本:API Level 11 已知的子类: DialogFragment、ListFragment、PreferenceFragment、WebViewFragment 2. 类概要 一个Fragment是应用程序的用户界面或行为的一个片段,它能够被放置在一个Activity中。通过FragmentManager对象来实现与Fragment对象的交互,能够通过Activity.getFragmentManager()方法和Fragment.getFragmentManager()方法来获取FragmentManager对象。 Fragment类有着广泛的应用,它的核心是代表了一个正在较大的Activity中运行的特俗的操作或界面。Fragment对象跟它所依附的Activity对象是紧密相关的,并且不能被分开使用。尽管Fragment对象定义了它们自己的生命周期,但是这个生命周期要依赖与它所在的Activity:如果该Activity被终止,那么它内部的Fragment是不能被启动的;当Activity被销毁时,它内部的所有Fragment对象都会被销毁。 所有的Fragment子类都必须包含一个公共的空的构造器。在需要的时候,Framework 会经常重新实例化Fragment类,在特殊的状态恢复期间,需要能够找到这个构造器来实例化Fragment类。如果空的构造器无效,那么在状态恢复期间会导致运行时异常发生。 较旧的平台 尽管Fragment API是在HONEYCOMB版本中被引入的,但是通过FragmentActivity也能够在较旧的平台上使用该API。 声明周期 尽管Fragment对象的生命周期要依附于它所在的Activity对象,但是它也有自己标准的活动周期,它包含了基本的活动周期方法,如onResume(),但是同时也包含了与Activity 和UI交互相关的重要方法。

android_fragment学习笔记2

Fragment 表现Activity 中用UI的一个行为或者一部分. 可以组合多个fragment 放在一个单独的activity中来创建一个多界面区域的UI,并可以在多个activity里重用某一个fragment.把fragment 想象成一个activity的模块化区域, 有它自己的生命周期, 接收属于它的输入事件, 并且可以在activity运行期间添加和删除. Fragment 必须总是被嵌入到一个activity中, 它们的生命周期直接被其所属的宿主activity的生命周期影响. 例如, 当activity被暂停,那么在其中的所有fragment 也被暂停; 当activity被销毁, 所有隶属于它的fragment也被销毁. 然而,当一个activity正在运行时(处于resumed状态), 我们可以独立地操作每一个fragment, 比如添加或删除它们. 当处理这样一个fragment事务时, 也可以将它添加到activity所管理的back stack -- 每一个activity中的back stack实体都是一个发生过的fragment事务的记录. back stack允许用户通过按下BACK 按键从一个fragment事务后退(往后导航). 将一个fragment作为activity布局的一部分添加进来时, 它处在activity的view hierarchy中的ViewGroup中, 并且定义有它自己的view布局.通过在activity的布局文件中声明fragment来插入一个fragment到你的activity布局中, 或者可以写代码将它添加到一个已存在的ViewGroup.然而, fragment并不一定必须是activity 布局的一部分; 也可以将一个fragment作为activity的隐藏的后台工作者. 本文档描述了如何使用fragment创建你的应用程序, 包括:当被添加到activity的back stack后, fragment如何维护他们的状态. 在activity中,与activity和其他fragment共享事件.构建到activity的action bar.以及更多内容. 设计哲学 Android在3.0中引入了fragments的概念,主要目的是用在大屏幕设备上--例如平板电脑上,支持更加动态和灵活的UI设计. 平板电脑的屏幕要比手机的大得多,有更多的空间来放更多的UI组件,并且这些组件之间会产生更多的交互.Fragment 允许这样的一种设计,而不需要你亲自来管理view hierarchy的复杂变化. 通过将activity的布局分散到fragment中, 你可以在运行时修改activity的外观, 并在由activity管理的back stack中保存那些变化. 例如, 一个新闻应用可以在屏幕左侧使用一个fragment来展示一个文章的列表, 然后在屏幕右侧使用另一个fragment来展示一篇文章–2个fragment并排显示在相同的一个activity中, 并且每一个fragment拥有它自己的一套生命周期回调方法,并且处理它们自己的用户输入事件. 因此, 取代使用一个activity来选择一篇文章,而另一个activity来阅读文章的方式, 用户可以在相同的activity中选择一篇文章并且阅读, 如图所示:

理解Fragment生命周期

理解Fragment生命周期 官网帮助文档链接: https://www.wendangku.net/doc/614666437.html,/guide/components/fragments.html 主要看两张图,和跑代码 一,Fragment的生命周二,与Activity生命周期的对比

场景演示: 切换到该Fragment 11-29 14:26:35.095: D/AppListFragment(7649): onAttach 11-29 14:26:35.095: D/AppListFragment(7649): onCreate 11-29 14:26:35.095: D/AppListFragment(7649): onCreateView 11-29 14:26:35.100: D/AppListFragment(7649): onActivityCreated 11-29 14:26:35.120: D/AppListFragment(7649): onStart 11-29 14:26:35.120: D/AppListFragment(7649): onResume 屏幕灭掉: 11-29 14:27:35.185: D/AppListFragment(7649): onPause 11-29 14:27:35.205: D/AppListFragment(7649): onSaveInstanceState 11-29 14:27:35.205: D/AppListFragment(7649): onStop 屏幕解锁 11-29 14:33:13.240: D/AppListFragment(7649): onStart 11-29 14:33:13.275: D/AppListFragment(7649): onResume 切换到其他Fragment: 11-29 14:33:33.655: D/AppListFragment(7649): onPause 11-29 14:33:33.655: D/AppListFragment(7649): onStop 11-29 14:33:33.660: D/AppListFragment(7649): onDestroyView 切换回本身的Fragment: 11-29 14:33:55.820: D/AppListFragment(7649): onCreateView 11-29 14:33:55.825: D/AppListFragment(7649): onActivityCreated 11-29 14:33:55.825: D/AppListFragment(7649): onStart 11-29 14:33:55.825: D/AppListFragment(7649): onResume 回到桌面 11-29 14:34:26.590: D/AppListFragment(7649): onPause 11-29 14:34:26.880: D/AppListFragment(7649): onSaveInstanceState 11-29 14:34:26.880: D/AppListFragment(7649): onStop 回到应用 11-29 14:36:51.940: D/AppListFragment(7649): onStart 11-29 14:36:51.940: D/AppListFragment(7649): onResume 退出应用 11-29 14:37:03.020: D/AppListFragment(7649): onPause 11-29 14:37:03.155: D/AppListFragment(7649): onStop

Android中Fragment的使用

Day13.2-Fragment Fragment:Activity片段 a)Fragment的特点: (1)Fragment作为Activity界面的一部分组成出现 (2)可以在一个Activity中同时出现多个Fragment,一个Fragment亦可在多个Activity 中使用。 (3)在Activity运行过程中,可以添加、移除或者替换Fragment(add()、remove()、replace()) (4)Fragment可以响应自己的输入事件,并且有自己的生命周期,当然,它们的生命周期直接被其所属的宿主activity的生命周期影响。只有当Activity处于活动状态时,程序员可通过方法独立的操作Fragment. 例如:Android3.0引入Fragment的初衷是为了适应 大屏幕的平台电脑,Framgment简化了大屏幕UI的设计,对UI组件进行分组,模块化管理,可以更方便地运行过程中动态更新Activity的用户界面,新闻浏览界面,该界面需要屏幕左边显示新闻列表,并在屏幕右边显示新闻内容。此时就可以再Activity中显示两个并排的Fragment,左边的Fragment显示新闻列表,右边的Fragment显示新闻内容。如果需要在正常尺寸的手机屏幕上运行该应用,可以改为使用两个Activity,ActivityA包含FragmentA,ActivityB包含FragmentB. b)使用: 1、建立Fragment:创建类继承Fragment或其子类 2、实现相关的回调函数 通常, 可以实现如下的生命周期方法:onCreate():当创建fragment时, 系统调用该方法. 在实现代码中,应当初始化想要在fragment中保持的必要组件, 当fragment被暂停或者停止 后可以恢复.

android_fragment学习笔记

Android Fragments 详细使用 Fragments 诞生初衷 自从Android 3.0中引入fragments 的概念,根据词海的翻译可以译为:碎片、片段。其上的是为了解决不同屏幕分辩率的动态和灵活UI设计。大屏幕如平板小屏幕如手机,平板电脑的设计使得其有更多的空间来放更多的UI组件,而多出来的空间存放UI使其会产生更多的交互,从而诞生了fragments 。fragments 的设计不需要你来亲自管理view hierarchy 的复杂变化,通过将Activity 的布局分散到frament 中,可以在运行时修改activity 的外观,并且由activity 管理的back stack 中保存些变化。 Fragments 设计理念 在设计应用时特别是Android 应用,有众多的分辨率要去适应,而fragments 可以让你在屏幕不同的屏幕上动态管理UI。例如:通讯应用程序(QQ),用户列表可以在左边,消息窗口在右边的设计。而在手机屏幕用户列表填充屏幕当点击某一用户时,则弹出对话窗口的设计,如下图: Fragments的生命周期 每一个fragments 都有自己的一套生命周期回调方法和处理自己的用户输入事件。对应生命周期可参考下图:

其中大多数程序必须使用Fragments 必须实现的三个回调方法分别为:

onCreate 系统创建Fragments 时调用,可做执行初始化工作或者当程序被暂停或停止时用来恢复状态,跟Activity 中的onCreate相当。 onCreateView 用于首次绘制用户界面的回调方法,必须返回要创建的Fragments 视图UI。假如你不希望提供Fragments 用户界面则可以返回NULL。 onPause 当用户离开这个Fragments 的时候调用,这时你要提交任何应该持久的变化,因为用户可能不会回来。更多的事件可以参考上图的生命周期关系图。 Fragments 的类别 系统内置了三种Fragments ,这三种Fragments 分别有不同的应用场景分别为:DialogFragment 对话框式的Fragments,可以将一个fragments 对话框并到activity 管理的fragments back stack 中,允许用户回到一个前曾摒弃fragments. ListFragments 类似于ListActivity 的效果,并且还提供了ListActivity 类似的onListItemCLick和setListAdapter等功能。 PreferenceFragments 类似于PreferenceActivity .可以创建类似IPAD的设置界面。 Fragments 的详细使用 首先先来看一张DEMO 效果图:

ip,协议首部,fragment,offset

竭诚为您提供优质文档/双击可除ip,协议首部,fragment,offset 篇一:计算机网络课实验二aRp与ip协议分析 实验二、aRp与ip协议分析 实验类型:验证类实验 实验课时:2学时 姓名:杨学成 实验时间和地点:10月23日星期二、第一大节 (8:00-9:50),计算机中心学号:20xx13418 一、实验目的 了解aRp协议的工作过程,验证ip数据报格式。二、实验准备 安装etherpeek(/soft/17558.html),执行“ipconfig –all”查看本机ip地址和mac地址。自学教材第4.4节网际控制报文协议icmp。三、实验内容1.aRp协议分析(1)假设邻座同学的主机为a,ip地址为w.x.y.z,运行etherpeek,新建一个Filter,只捕获本机与w.x.y.z之间的以太网帧。 (2)进入dos仿真窗口,执行“arp–a”查看本机的

aRp缓存内容,若有w.x.y.z的记录,执行“arp–dw.x.y.z”删除该记录。注:执行“arp-help”可知arp 的各选项用法。 (3)开始捕获,然后执行“pingw.x.y.z”,停止捕获,记录并分析封装aRp报文的帧各字段的含义,如表1。 表2帧和aRp报文格式 (4)执行“arp–dw.x.y.z”清除缓存的ip-mac记录。本机和主机a停止任何数据通信,在主机a上访问本机外的任何主机,再执行“arp–a”查看本机aRp缓存,看是否新增了主机a的ip-mac记录,解释一下。 2.ip数据报格式分析 开始捕获,然后在命令行执行pingw.x.y.z,再停止捕获;分析捕获的帧,特别是封装的ip数据报格式,记录各字段(包括数据部分“icmp报文”的字段)的值和含义(如表1),并与ip数据报、icmp报文的格式进行比较。 重新开始捕获,然后在命令行执行“tracertw.x.y.z”,再停止捕获,记录并分析各字段的含义(如表1),并与ip 分组格式进行比较。四、回答下列问题 (1)aRp的用途、工作原理,ip和aRp是什么关系? aRp协议是“addressResolutionprotocol”(地址解析协议)的缩写。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的mac地址的。在以太网中,一个主机

ViewPager+Fragment基本使用

ViewPager+Fragment可以做出多页面滑动效果,让我们的应用程序界面操作起来更加灵活 对于ViewPager和Fragment组件还不熟悉的朋友,可以先看看相关的资料 首先在activity_main.xml布局文件中加入ViewPager组件 既然要实现左右的页面滑动,肯定要往ViewPager中添加一些View视图或者Fragment,这里创建了3个Fragment的布局文件 这3个布局文件非常简单,跟Activity的布局用法一模一样,代码就不贴出来了,直接看Activity的java代码 package huahua.viewpager; import java.util.ArrayList; import java.util.List; import android.os.Bundle; import android.app.Activity; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.PagerTabStrip; import android.support.v4.view.PagerTitleStrip; import android.support.v4.view.ViewPager; import android.util.Log;

Android入门之Fragment用法

Android入门之Fragment用法 当我们需要动态的多界面切换的时候,就需要将UI元素和Activity融合成一个模块。在2.3中我们一般通过各种Activity中进行跳转来实现多界面的跳转和单个界面动态改变。在4.0或以上系统中就可以使用新的特性来方便的达到这个效果--Fragment类。Fragment类似一个嵌套Activity,可以定义自己的layout和自己的生命周期。 多个Fragment可以放在一个Activity中(所以上面讲到类似一个嵌套Activity),而这个类可以对这些Fragment进行配置以适应不同的屏幕尺寸(比如平板和手机)。 下面将向您讲述如何创建通过Fragment向用户提供一个动态的体验,并且还可以针对不同的屏幕尺寸做优化,给用户提供更好的使用体验。该特性可以运行在Android1.6上面(当然需要google库的支持)。(all while continuing to support devices running versions as old as Android 1.6.这个真心没搞懂,E文好的同学指点下) 使用Android库 Android支持库是一个jar文件,使用这个支持库可以让我们在低版本上运行高版本的特性(比如Fragment并非1.6的特性,但是通过库的引入,我们可以将包含fragment的程序运行在1.6上面,保证程序兼容性)。

步骤: 1. 通过SDK Manager下载Android Support Package。 2. 在项目代码顶层创建libs文件夹,并将你需要的jar库文件拷贝到libs里面去。 3. 更新manifest文件,设置如下 为了确保没有在旧的系统上面使用新的api特性,却要在使用Fragment的文件中包含如下内容: 应该声明FragmentActivity(而不是Activity)来包含Fragments。 创建Fragment

Fragment的使用方法

Android开发中fragment 其目的是为了解决不同屏幕分辩率的动态和灵活UI设计。大屏幕如平板小屏幕如手机,平板电脑的设计使得其有更多的空间来放更多的UI组件,而多出来的空间存放UI使其会产生更多的交互,从而诞生了fragments 。 因为Fragment必须嵌入在Acitivity中使用,Fragment是activity的界面中的一部分或一种行为,不能独立存在,所以Fragment的生命周期和它所在的Activity是密切相关的。如果Activity是暂停状态,其中所有的Fragment都是暂停状态;如果Activity是stopped状态,这个Activity中所有的Fragment都不能被启动;如果Activity被销毁,那么它其中的所有Fragment都会被销毁。但是,当Activity在活动状态,可以独立控制Fragment的状态,比如加上或者移除Fragment。 介绍一下常用的几个生命周期函数: onAttach(Context) –> 当fragment被绑定到activity上时回调 onCreate(Bundle) –> 当fragment对象创建的时候回调,一般在此方法里做参数接收。onCreateView(LayoutInflater, ViewGroup, Bundle) –> 创建fragment视图时回调onDestoryView –> 视图销毁时回调 onDestory –> 销毁fragment时回调 onDetech() –> fragment与activity失去关联时回调 Fragment的使用方法 使用Fragment时,需要继承Fragment或者Fragment的子类,一般而言要重写三个方法,onCreate():系统在创建Fragment的时候调用这个方法,这里应该初始化相关的组件,一些即便是被暂停或者被停止时依然需要保留的东西。 onCreateView():当第一次绘制Fragment的UI时系统调用这个方法,必须返回一个View,如果Fragment不提供UI也可以返回null。 onPause():当用户离开Fragment时第一个调用这个方法,需要提交一些变化,因为用户很可能不再返回来。 实现Fragment的UI,必须实现onCreateView()方法。 假设Fragment的布局设置写在example_fragment.xml资源文件中,那么onCreateView()方法可以如下写: public static class ExampleFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(https://www.wendangku.net/doc/614666437.html,yout.example_fragment, container, false); } } onCreateView()中container参数代表该Fragment在Activity中的父控件;savedInstanceState 提供了上一个实例的数据。 inflate()方法的三个参数: 第一个是resource ID,指明了当前的Fragment对应的资源文件;

fragment

Fragment 1.My cat flattens herself and tries to get out of the room. Whenever I turn on the vacuum. Apparently, she thinks something is coming to eat her. 2.Philadelphia was originally a Quaker colony. That was founded by William Penn in 1681. By 1777, it had become the capital of the new United States. 3.Anna is the manager of the new neighborhood garden. That was started to encourage people to grow their own food. She has been making sure everyone is using only organic products. 4.Since Connor first began watching NOV A. He has been fascinated with space travel. He has decided to become an astronaut. 5.Roman law was first recorded in 450 B.C. In what was known as the “Twelve Tablets”. It lasted for many centuries. Until the fall of the eastern Roman Empire nearly 2000years later. 1.Knowing she had not finished the book. Madelyn was very nervous about going to class. She was sure the teacher was going to give a quiz. 2.I hired a neighbor boy. To mow my lawn and weed the garden. He has been doing a great job. 3.Searching for the right filament for his incandescent light bulb. Thomas Edison found that a strip of carbonized bamboo could glow for 1200 hours. 4.Cullen and Bryson have been friends since first grade. Graduating from high school this May. 5.To get his company to grow rapidly. Harvey Firestone launched a vigorous marketing campaign. In 1906, he sold 2000 sets of tires to the Ford Motor Company. 1.The music festival had an amazing lineup. For example, The Black Eyed Peas, Marron 5, and Coldplay. I was very excited when I was able to purchase tickets. 2.Some European countries remained neutral during World War II. Such as Switzerland and Portugal. Most South American countries refused to take sides as well. 3.The house was overrun with cats. At least twenty of them. It was incredibly smelly and filled with fur balls. 4.Chloe loves to collect rare pieces of pottery. Like jasper ware. Her most prized piece is a Yixing teapot that is several hundreds years old. 5.I know why I had to learn certain subjects in high school. Such as American history. Becoming

解释实现Fragment切换后_第一个Fragment控件仍在的问题

对于刚入手Fragment的新手,在学习利用按钮实现多个Fragment切换时,可能会遇到“按下第一个Fragment的按钮后,切换到第二个Fragment时,第一个Fragment的控件(按钮或文本等等)还保留”的问题。这个问题同样困扰了我两天,作为一名业余编程者而已,知识有限,也只能在网上寻求解决的方法,然而网上也没找到好的说法和解决方法,纯靠自己摸索,终于明白了其所以然。以下讲解均是个人见解,希望能帮到读这篇文张的你。 对于问题,是没有解决方法的。为什么这么说呢?因为这个现象的本身并不是问题,而是作为初学者的理解还没到位的缘故。 使用android studio新建一个Fragment项目后,你会见一个MainActivityFragment, 图中F1、F2是为了验证我的猜想创建的Fragment的子类,所以你大可不用理它们,只需知道MainActivity和MainActivityFragment是随着项目建立而生成的,那就足够了。 接下来就是这个问题的核心了,MainActivityFragment是什么?在往后创建的所有Fragmeng类中,它实际是充当一个什么样的角色? 答案:当你只在MainActivityFragment的基础上新建一个Fragment的子类(F1)时,调试的结果和模拟器呈现的现象,会让你困扰其中。但当你新建多两个Fragment类(F1、F2)的时候,你就会发现它们居然可以实现相互间的切换,然而MainActivityFragment的控件(文本控件、按钮控件等等这些添加在fragment_main.xml中的控件)依旧存在,并没有随着fragment的切换而消失。 针对这种现象,是否可以这样认为:MainActivityFragment虽然是Fragment类,但是它被Android studio 创建出,是为了作为编程者往后所编写的Fragment子类的一个背景,也就是一个根源。就好比如你在一张纸上上,可以用各种笔涂鸦一样。纸就是MainActivityFragment,而在MainActivityFragment上展现出来的Fragment子类就是笔。

Activity传值到Fragment

Activity传值到Fragment 一直说的不找button为啥? 通过bundle传值 Bundle bundle=new Bundle(); bundle.putString(“username”,username); 在Activity中通过detailFragment.setArguments(bundle) 在Fragment中通过getArgument() Bundle bundle= this.getArguments(); String userName=bundle.getString("userName"); View view= inflater.inflate(https://www.wendangku.net/doc/614666437.html,yout.fragment_detail, container, false); this.textView_info= (TextView) view.findViewById(R.id.textView_info); this.textView_info.setText(userName); 通过找到Fragment的Textview的id传值 public void passValue(View view) { String userName = this.editText_userName.getText().toString(); if (TextUtils.isEmpty(userName)) { this.editText_userName.setError("用户名不能为空!"); this.editText_userName.requestFocus(); return; } this.detailFragment.setName(userName); } 通过set函数传值 在Fragment中添加set函数 public void setName(String userName){ this.textView_info.setText(userName); } 在Activity中调用textView_info.setText(userName);

andorid中的fragment详细介绍及应用

android Fragments详解一:概述 Fragment是activity的界面中的一部分或一种行为。你可以把多个Fragment们组合到一个activity中来创建一个多面界面并且你可以在多个activity中重用一个Fragment。你可以把Fragment认为模块化的一段activity,它具有自己的生命周期,接收它自己的事件,并可以在activity运行时被添加或删除。 Fragment不能独立存在,它必须嵌入到activity中,而且Fragment的生命周期直接受所在的activity的影响。例如:当activity暂停时,它拥有的所有的Fragment们都暂停了,当activity销毁时,它拥有的所有Fragment们都被销毁。然而,当activity运行时(在onResume()之后,onPause()之前),你可以单独地操作每个Fragment,比如添加或删除它们。当你在执行上述针对Fragment的事务时,你可以将事务添加到一个棧中,这个栈被activity管理,栈中的每一条都是一个Fragment的一次事务。有了这个栈,就可以反向执行Fragment的事务,这样就可以在Fragment级支持“返回”键(向后导航)。 当向activity中添加一个Fragment时,它须置于ViewGroup控件中,并且需定义Fragment自己的界面。你可以在layoutxml文件中声明Fragment,元素为:;也可以在代码中创建Fragment,然后把它加入到ViewGroup控件中。然而,Fragment 不一定非要放在activity的界面中,它可以隐藏在后台为actvitiy工作。 本章描述如何使用fragment,包括fragment在加入activity的后退棧中时如何保持自己的状态,如何与activity以及其它fragment们共享事件,如何显示在activity的动作栏,等等。 设计哲学

Activity和Fragment的onDestory()区别及Finish()

Activity和Fragment的onDestory()区别及Finish()的总结Fragment的生命周期回调方法:onDestory(): 官方文档如下: public void onDestroy() Called when the fragment is no longer in use. This is called after onStop() and before onDetach(). 即当Fragment不被使用时回调该方法,回调在onStop()之后,在OnDetach()之前。 注:fragment和生命周期依赖于Activity 即,Activity调用onDestory之前会先调用fragment里的onDestory Activity的onDestory与finish()的区别: finish()方法用于结束一个Activity的生命周期,而onDestory()方法则是Activity的一个生命周期方法,其作用是在一个Activity对象被销毁之前,Android系统会调用该方法,用于释放此Activity之前所占用的资源。 finish会调用到onDestroy方法, 可以在onDestroy里打印一句话,就会发现在finish方法那也会打印这句话。。。 Activity.finish() Call this when your activity is done and should be closed. 在你的activity动作完成的时候,或者Activity需要关闭的时候,调用此方法。 当你调用此方法的时候,系统只是将最上面的Activity移出了栈,并没有及时的调用onDestory()方法,其占用的资源也没有被及时释放。因为移出了栈,所以当你点击手机上面的“back”按键的时候,也不会再找到这个Activity。 Activity.onDestory() the system is temporarily destroying this instance of the activity to save space. 系统销毁了这个Activity的实例在内存中占据的空间。 在Activity的生命周期中,onDestory()方法是他生命的最后一步,资源空间等就被回收了。当重新进入此Activity的时候,必须重新创建,执行onCreate()方法。

Android_手机开发-Fragment的使用

南昌航空大学实验报告 2014 年04 月29 日 课程名称:Android 实验名称:Fragment的使用 班级:姓名:同组人: 指导教师评定:签名: 一、实验目的 熟悉Fragment的用法; 熟悉Fragment监听器方法的调用位置。 二、实验要求 1、编写一个简单通信,要求如下: 使用RelativeLayout布局,Button、EditText等控件实现简单布局; 重写onCreateView方法; 编写点击监听器(Onclicklistener); 实现简单通信。 ●检查布局是否可以在虚拟机显示 ●点击按钮是否可用 ●简单通信是否可以正常使用 编写测试程序。 三、实验步骤 ①、 1.先编写RelativeLayout实现Fragment的主页面; 2.编写activity extends Fragment初始化按钮; 3.编写监听器,实现通信; 4.测试通信是否可正常使用。 四、参考源代码 activity_main.xml

相关文档