浅谈Android中的Fragment

一,什么是Fragment?

    Fragment是一种可以嵌入在activity当中的一个模块化和可重复利用的组件,它可以定义自己的布局和监听事件,以及通过使用它自己的生命周期回调方法来定义的它自己的行为。

    Fragment的设计理念:允许你把Activity中的布局文件分散到几个不同的Fragment中,通过管理Fragment来管理布局。这样,可以非常轻松的实现“phone”和“pad”两套版本的app开发:

这里写图片描述

    每个Fragment拥有自己的生命周期,它们的生命周期会受宿主activity的生命周期的影响,下面列出了Fragment生命周期中各个时期的回调方法:

这里写图片描述

    public void onAttach(Activity activity)
    当Fragment被添加到Activity时候会回调这个方法,并且只调用一次

    public void onCreate(Bundle savedInstanceState)
    创建Fragment时会回调,只会调用一次

    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState)
    每次创建都会绘制Fragment的View组件时回调该方法

    public void onActivityCreated(Bundle savedInstanceState)
    当Fragment所在的Activty启动完成后调用

    public void onStart()
    启动Fragment

    public void onResume()
    恢复Fragment时会被回调,调用onStart()方法后面一定会调用onResume()方法

    public void onPause()
    暂停Fragment

    public void onStop()
    停止Fragment

    public void onDestroyView()
    销毁Fragment所包含的View组件时

    public void onDestroy()
    销毁Fragment时会被回调

    public void onDetach()
    Fragment从Activity中删除时会回调该方法,并且这个方法只会调用一次

    【注意】:

    1.Fragment第一次绘制的时候,系统会调用onCreateView(),为了绘制Fragment中定义的UI(UI定义在一个xml布局文件中),此方法必须返回一个View,如果不显示就返回null即可
    2.Fragment可以作为avtivity界面的一部分组成出现
    3.可以在一个activity中同时出现多个Fragment,并且一个Fragment也可以在多个activity中使用
    4.activity运行过程中,可以添加(add),移除(remove)或替换(replace)Fragment(前提是这些fragment都是动态加载的)

二,如何使用Fragment?

    Fragment可以通过“静态”和“动态”两种方式加载到Activity中。

    1.静态加载:
    像在布局文件添加一个控件一样,在xml里面声明一个Fragment标签,然后在Activity中引入即可。

    (1)创建Fragment中的布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:background="@color/background_floating_material_dark"
    >

    <ImageButton
        android:id="@+id/imageButton"
        android:src="@mipmap/ic_launcher"
        android:layout_width="35dp"
        android:layout_height="35dp" />

    <TextView
        android:text="肥嘟嘟左卫门"
        android:textColor="#fff"
        android:layout_gravity="center"
        android:gravity="center"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />


</LinearLayout>
    (2)自定义一个类继承Fragment,并实现一些必要的方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值