Android Fragment之间的通信

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
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值