文档章节

Android Fragment的使用

娶到笨笨
 娶到笨笨
发布于 2014/04/07 14:58
字数 1225
阅读 95
收藏 5

可以分为下面的几部分:

    • 使用支持库

    • 创建一个Fragment

    • 创建一个动态UI

    • 多个Fragment之间的通信

 

1、使用支持库

如果您的应用需要运行在3.0及以上的版本,可以忽略这部分内容。

如果您的应用使用在3.0以下、1.6及以上的版本,需要使用支持库来构建。

使用支持库的步骤:

使用SDK下的SDK Manager工具下载Android Support Package

 2. 在您的Android工程的顶级目录下创建一个libs目录

3. 找到您的SDK下的/extras/android/support/v4/android-support-v4.jar,并且拷贝到您的项目的libs下,选中这个jar包 → 右键 → Build Path → Add to Build Path

4.在您的项目的Manifest.xml文件的<manifest>标签下添加:

<uses-sdkandroid:minSdkVersion="4"

  android:targetSdkVersion="8"/>

5.如果您的项目支持3.0以下的版本,请导入如下的包:android.support.v4.*;

在使用FragmentActivity请继承FragmentActivity而不是Activity。如果您的系统是3.0或以上版本,同样需要导入类似的包,但是可以使用普通的Activity。 

  

2、创建一个Fragment

Fragment支持在不同的Activity中使用并且可以处理自己的输入事件以及生命周期方法等。可以看做是一个子Activity

创建一个Fragment

创建一个Fragment和创建一个Activity很类似,继承Fragment类,重写生命周期方法,主要的不同之处就是需要重写一个onCreateView()方法来返回这个Fragment的布局。例子:

 

  

Fragment的生命周期方法依赖于Activity的生命周期,例如一个ActivityonPause()的生命周期方法被调用的时候这个Activity中的所有的FragmentonPause()方法也将被调用。

 

更多的内容请参照类Fragment

使用XML添加FragmentActivity

尽管Fragment可以被多个Activity重用,但是您也必须把Fragment关联到一个FragmentActivity上。可以使用XML布局文件的方式来实现这种关联。

说明:上面的所说的FragmentActivity适用在API3.0以下的版本,3.0及以上的版本可以使用普通的Activity

例子:

  

上面使用fragment标签,android:name=””指定一个添加到xml中的Fragment。对于创建不同的屏幕尺寸布局的更多信息,请阅读支持不同的屏幕尺寸。

 

 

  

当您添加一个片段一个活动布局定义的布局XML文件中的片段,你不能删除在运行时的片段。如果您打算在用户交互和交换片段,你必须添加的活性片段的活动时第一次启动。

 

3、构建一个灵活的UI

 

FragmentManager提供了对Activity运行时的Fragment的添加、删除、替换的操作。

 

Activity运行期间你可以添加Fragment而不是在XML布局文件中进行定义。如果你打算在Activity中改变Fragment的生命过程。

 

如果要执行添加、删除、修改的操作,你必须通过FragmentManager的对象获得一个FragmentTransaction对象,通过它的API来执行这些操作。

 

添加一个Fragment到一个Activity,必须把这个Fragment添加到一个容器视图中。例子:

 

Activity中你可以通过getFragmentManager()来获得Fragment对象,然后通过FragmentManager对象的beginFragmentTransaction()方法来获得FragmentTransaction对象。通过它的add()方法来添加一个Fragment到当前的Activity中。

一个FragmentTransaction对象可以执行多个增删修的方法,如果你想把这些修改提交到Activity上,必须在最后调用一下这个对象的commit()方法。例子:

 

  

由于不是定义在XML布局中的,所有可以转型删除和修改的操作。

如果替换或者删除一个Fragment然后让用户可以导航到上一个Fragment,你必须在调用commit()方法之前调用addToBackStack()方法添加到回退栈。如果你把这个Fragment添加到了回退栈,在提交之后这个Fragment是会被Stop而不是Destroyed。如果用户导航到这个Fragment,这个Fragment会被Restart而不是重新创建。如果你没有把它添加到回退栈,则在删除或者替换的时候它将被Destroyed。例子:

  

4、与其他Fragment的交互

两个单独的Fragment之间是不应该进行通信的。应该使用他们所存在的Activity作为沟通的纽带。

为了实现两个Fragment的交互,您可以在Fragment中定义一个接口,然后再这个接口中定义一个方法,在FragmentonAttach()方法中调用这个接口中的方法。然后让Activity实现这个方法来完成ActivityFragment之间的通信。例子:

定义接口并调用方法:

 

  

实现接口,在这个方法中可以进行与其他Fragment的数据的交互:

  

可以通过FragmentManagerfindFragmentById()来查找一个Fragment

 


© 著作权归作者所有

娶到笨笨
粉丝 6
博文 51
码字总数 6482
作品 0
奉化
私信 提问
加载中

评论(3)

shikeaiDev
shikeaiDev
与其他Fragment的交互

可以使用OTTO BUS
娶到笨笨
娶到笨笨 博主

引用来自“蜘蛛猴”的评论

软件最小支持的版本应该是android:minSdkVersion吧

恩,你说的很对,谢谢

蜘蛛猴
蜘蛛猴
软件最小支持的版本应该是android:minSdkVersion吧
Andriod Fragment---给Activity添加一个Fragment

通常,Fragment作为Activity整体视图层次树的一部分,被嵌入到宿主Activity的界面的一部分。有两种方法能够把Fragment添加到Activity布局中: 1. 在Activity布局文件的内部声明Fragment。 你...

长平狐
2012/10/16
6.9K
0
创建灵活的用户界面-Android Fragment

创建灵活的用户界面-android Fragment. Android Support Library(支持库)提供了包含一个API库的JAR文件,当你的应用运行在Android早期版本时,Support Library(支持库)允许你的应用使用最近版...

顶层设计
2013/02/26
5.3K
0
Fragments (Android官方文档中文版)

Fragment 表现 Activity 中用UI的一个行为或者一部分.可以组合多个fragment放在一个单独的activity中来创建一个多界面区域的UI,并可以在多个activity里重用某一个fragment.把fragment想象成一...

长平狐
2012/10/09
1K
2
Android中Fragment的应用 android3.0

转载: http://blog.sina.com.cn/s/blog_5d6ee3360100r1my.html Fragment 表现 Activity 中用UI的一个行为或者一部分. 可以组合多个fragment放在一个单独的activity中来创建一个多界面区域的...

迷途d书童
2012/03/26
1K
1
android之Fragment(官网资料翻译)

Fragment要点 Fragment作为Activity界面的一部分组成出现 可以在一个Activity中同时出现多个Fragment,并且,一个Fragment亦可在多个Activity中使用。 在Activity运行过程中,可以添加、移除...

随智阔
2013/05/26
112
0

没有更多内容

加载失败,请刷新页面

加载更多

从AnnotationTransactionAspect开始rushSpring事务

0. Spring 事务 with LTW 0.1. Spring 事务 With LTW的原因: Pure Proxy-base mode有缺陷,其失效原因分析及使用方法及运行机制(LoadTimeWeaverBeanDefinitionParser和 AspectJWeavingEnable......

Aruforce
13分钟前
3
0
mac 安装protobuf 2.5.0

下载安装包 目前protobuf的最新版本是3.9.1,但是hadoop等好多框架依然依赖的是2.5.0,因此,最好不要安装最新的。 https://github.com/protocolbuffers/protobuf/releases/tag/v2.5.0 编译安...

hexiaoming123
18分钟前
4
0
Qt编写自定义控件52-颜色下拉框

一、前言 这个控件写了很久了,元老级别的控件之一,开发之初主要是自己的好几个项目要用到,比如提供一个颜色下拉框设置对应的曲线或者时间颜色,视频监控项目中经常用到的OSD标签设置,这个...

飞扬青云
25分钟前
4
0
Shell脚本应用 – for、while循环语句

通过Shell脚本应用(二)学习到了if条件条件语句的使用方法等。Shell作为一种脚本编程语言,同样了包含了循环,分支等其他程序控制结构,从而能够轻松完成更加复杂、强大的功能。我们今天就来...

Linux就该这么学
30分钟前
5
0
Sqoop之导入到Hive时特殊字符导致数据变乱

问题是这样的: Sqoop从关系型数据库导入数据到Hive时,发现数据量增多了,查找之后发现是由于源数据中含义\r\t\n特殊字符的数据,这样Hive遇到之后就将其视为换行,所以导入到Hive后数据条数...

克虏伯
32分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部