Android App开发中创建Fragment组件的教程

所属分类: 软件编程 / Android 阅读数: 1589
收藏 0 赞 0 分享

你可以认为Fragment作为Activity的一个模块部分,有它自己的生命周期,获取它自己的事件,并且你可以在Activity运行的时候添加或者移除它(有点像你可以在不同的Activity中重用的一个”子Activity“)。这节课程讲述如何使用Support Library继承Fragment类,所以你的应用程序仍然是兼容运行的系统版本低于Android1.6的设备。

注意:如果你决定你的应用要求的最低的API级别是11或者更高,你不需要使用Support Library,反而能使用Frameword内的Fragment和相关API。要注意,这节课程主要讲使用Support Library的API,它使用特殊的包名,并且有些时候和包含在平台中版本API的名称略有不同。

在你开始这节课程之前,你必须配置你的Android项目使用Support Library。如果之前你没有使用过Support Library,遵照Support Library Setup文档,配置你的项目使用v4 Library。然而,你也能包含在你的Activity中Action Bar

创建Fragment
你可以把一个Fragment想象成一个Activity的模块区域,它有自己的生命周期,接收它自己的输入事件,并且你可以在Activity运行时添加和删除它(这有点像一个子Activity,你可以在不同的Activity中重用它们)。本节课向你介绍如何使用支持类库来扩展Fragment,以便让你的应用程序能够在像Android1.6那样的较旧版本上的兼容性。

注意:如果因为一些原因,你决定你的应用程序需要的API级别在11以上,那么你就不需要使用支持类库,并且可以使用框架内置的Fragment类和相关的API来代替。要注意的是本课的重点是使用支持类库中的API,它使用一个特殊的包签名,并且某些时候API的名称会比包含在平台内的版本有稍微的不同。

创建Fragment类

要创建一个Fragment,就要继承Fragment类,然后重写关键的生命周期方法,把你的应用程序逻辑插入其中,这跟Activity类类似。

创建Fragment时的一个不同点是,你必须使用onCreateView()回调来定义布局。实际上,为了获得一个正在运行的Fragment,这只是你所需要的唯一的回调方法。例如,下面是一个简单的指定了自己布局的Fragment:

import android.os.Bundle;

import android.support.v4.app.Fragment;

import android.view.LayoutInflater;

import android.view.ViewGroup;

public class ArticleFragment extends Fragment {

  @Override

  public View onCreateView(LayoutInflater inflater, ViewGroup container,

    Bundle savedInstanceState) {

    // Inflate the layout for this fragment

    return inflater.inflate(R.layout.article_view, container, false);

  }

}

就像一个Activity,Fragment应该实现其他的生命周期回调方法,从而允许你管理它在Activity中的状态(添加或删除),以及Activity在它生命周期状态间转换时的状态。例如,当Activity的onPause()方法被调用时,Activity中的任何Fragment也会接收到对onPause()方法的调用。

有关Fragment的生命周期和有效的回调方法,请看Fragments开发指南。

使用XML把一个Fragment添加到一个Activity中

Fragment是可复用的、模块化的UI组件,每个Fragment类的实例都必须跟一个父类是FragmentActivity的Activity相关联。通过在你的Activity布局XML文件内定义每个Fragment可以完成这种关联。

注意:FragmentActivity是一个支持类库中提供的特殊的Activity,它用于处理系统版本是API Level 11以前的Fragment。如果你使用的系统版本最低是API Level 11或更高,那么就就可以使用常规的Activity。

当屏幕被认为足够大时,下例布局文件就会把两个Fragment添加到一个Activity中(该文件被放在由large限定的目录名中)。

res/layout-large/news_articles.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

  android:orientation="horizontal"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent">

  <fragment android:name="com.example.android.fragments.HeadlinesFragment"

       android:id="@+id/headlines_fragment"

       android:layout_weight="1"

       android:layout_width="0dp"

       android:layout_height="match_parent" />

  <fragment android:name="com.example.android.fragments.ArticleFragment"

       android:id="@+id/article_fragment"

       android:layout_weight="2"

       android:layout_width="0dp"

       android:layout_height="match_parent" />

</LinearLayout>

提示:关于给不同屏幕尺寸创建布局的信息,请看支持不同的屏幕尺寸。

以下是使用这个布局的Activity:

import android.os.Bundle;

import android.support.v4.app.FragmentActivity;

public class MainActivity extends FragmentActivity {

  @Override

  public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.news_articles);

  }

}

注意:当你通过在布局XML文件中定义Fragment的方式把Fragment添加给Activity布局时,你不能在运行时删除该Fragment。如果你打算在用户交互期间切换Fragment,你就必须在Activity被首次启动时把Fragment添加到Activity中。


更多精彩内容其他人还在看

Android样式和主题之选择器的实例讲解

今天小编就为大家分享一篇关于Android样式和主题之选择器的实例讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

Android应用动态修改主题的方法示例

今天小编就为大家分享一篇关于Android应用动态修改主题的方法示例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

Flutter 网络请求框架封装详解

这篇文章主要介绍了Flutter 网络请求框架封装详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Flutter倒计时/计时器的实现代码

这篇文章主要介绍了Flutter倒计时/计时器的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Android使用google breakpad捕获分析native cash

这篇文章主要介绍了Android使用google breakpad捕获分析native cash 的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

详解Flutter WebView与JS互相调用简易指南

这篇文章主要介绍了详解Flutter WebView与JS互相调用简易指南,分为JS调用Flutter和Flutter调用JS,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android开发实现ListView和adapter配合显示图片和文字列表功能示例

这篇文章主要介绍了Android开发实现ListView和adapter配合显示图片和文字列表功能,涉及Android使用ListView结合adapter适配器实现图文显示功能相关的布局、解析、权限控制等操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

Android文字基线Baseline算法的使用讲解

今天小编就为大家分享一篇关于Android文字基线Baseline算法的使用讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
收藏 0 赞 0 分享

Flutter自定义实现神奇动效的卡片切换视图的示例代码

这篇文章主要介绍了Flutter自定义实现神奇动效的卡片切换视图的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android实现自定义滑动刻度尺方法示例

这篇文章主要给大家介绍了关于Android实现自定义滑动刻度尺的相关资料,文中通过示例代码介绍的非常详细,对各位Android开发者们具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享
查看更多