1.Fragment 的概述
(1)Fragment是什么
我们都知道,Fragment的翻译可以译为:碎片、片段。在Android开发中引入这一概念的目的是为
了解决不同安卓设备屏幕分辩率不同的问题,引入Fragment碎片技术,可以实现动态和灵活的UI设
计,软件工程师们不需要再对同一款软件进行多次的适应性开发,以便于适应不同屏幕分辨率的安卓设备。
我们可以将Fragment看作是Acitivity的一部分,甚至可以说,整个Activity就是由不同的Fragment组成。更
具有吸引力的是,Fragment有着自己的生命周期和各种处理事件的函数,也就是说,我们不必再将所有的事
件处理都写在Activity中,只需要有一个Fragment专门去处理即可。
(2)Fragment的生命周期
Fragment必须是依存于Activity的,Fragment的生命周期很大程度上受制于Activity。这里放上一张官
网提供的Activity与Fragment生命周期关系说明图。
从图中我们可以看到,在Activity创建时,Fragment也同时被创建,但是Fragment的创建是分为好几步的
onAttach(); //当Activity与Fragment关联时调用
onCreate(); //创建Fragment时调用
onCreateView(); //创建该Fragment的视图
onActivityCreate(); //当Activity的onCreate()方法返回时调用
onDestoryView(); //与onCreateView相对应,当改Fragment被移除时调用
onDestory(); //销毁Fragment时调用
onDetach(); //与onAttach()相对应,当Fragment与Activity的关联被取消时调用
2.静态Fragment 和 动态Fragment
静态Fragment是Fragment最简单的使用方法。我们将主布局文件中加入fragment布局就可,这里我们是将
fragment直接当作一个控件来使用的。
动态Fragment,我们不需要再将fragment的布局文件事先放入主布局中,而是,当我们需要用到的时候,
通过代码,动态的进行加入。
这里有以下几个注意事项:
1.注意每一个fragment的布局都要有一个与之对应的继承于Fragment的类(我们在这里对fragment与activity进行绑定和关联)。
2.关于继承.app.Fragment和.support.v4.app.Fragment的问题:
如果要使用前者,那么MainActivity继承Activity即可,然后动态添加时,是getFragmetManager();
如果使用后者,那么MainActivity要继承FragActivty,然后动态添加时,是getSupportFragmentManager();
3.Fragment 之间的简单通信
在了解了Fragment的基本知识之后,我们最关心的还是Fragment之间是如何进行通信的。如何从一个
fragment向宿主activity发送请求,又如何从activity向fragment发送请求是我们这一节讲述的重点。
首先,我们创建一个Android项目,命名为Fragment。
在Activity.xml文件下,进行如下布局的编写:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/et1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="我是activity啊" />
<Button
android:id="@+id/btn1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#76EE00"
android:text="发送信息到左" />
<Button
android:id="@+id/btn2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#7171C6"
android:text="发送信息到右" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<LinearLayout