安卓训练-开始-使用 Fragment 构造动态 UI-创建 Fragment

创建 Fragment

上一课

下一课

这节课教你

  1. 创建一个 Fragment 类
  2. 使用 XML 添加 Fragment 到 Activity

你还需要阅读

试试

下载示例

FragmentBasics.zip

你可以认为 fragment 是 activity 的模块化的部分,它有自己的生命周期,接收自己的输入事件,你可以在 activity 的运行过程中把它添加到 activity 或从 activity 中删除它(有点像一个你可以在不同 activity 中使用的"子 activity")。这节课教你怎样使用支持库扩展Fragment
类,让你的应用与运行低至安卓 1.6版本的设备保持兼容。

注意:如果你决定了你的应用要求的最小 API 等级是11或更高,你不需要使用支持库,你可以使用由
Fragment
类和相关 API 构建的框架。你需要注意到这节课着重介绍使用支持库的 API,它使用特定的包签名,有时 API 名称和平台包含的版本有些不一样。

在开始这节课之前,你必须设置你的安卓工程使用支持库。如果你以前没用过支持库,根据设置支持库文档设置你的工程使用v4 库。不过,你也可以使用v7 appcompat 库,它与安卓 2.1(API 等级 7)兼容并且包含Fragment
API,使你的 activity 包含操作栏

创建一个 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) {
        // 为这个 fragment 渲染布局
        return inflater.inflate(R.layout.article_view, container, false);
    }
}

就像一个 activity,一个 fragment 应该实现其他的生命周期回调方法,这允许你在 fragment 添加到 activity 或从 activity 中删除时或 activity 的生命状态转变时,管理 fragment 的状态。例如,当一个 activity 的onPause()
方法被调用,这个 activity 中的任何 fragment 都收到一个onPause() 调用。

更多关于 fragment 生命周期和回调方法的信息,参见 Fragments 开发者指南。

使用 XML 添加 Fragment 到 Activity



Fragment 是可重用的,模块化的 UI 组件,一个
Fragment
类的每个实例必须和一个父FragmentActivity
关联。你可以通过在你的 activity 的布局 XML 文件中定义每个 fragment 来实现这种关联。

注意: FragmentActivity 支持库为了在比 API 等级 11老的系统版本上处理 fragment而提供的一个特殊的 activity。如果你支持的最低系统版本是 API
等级 11 或更高,你可以使用一个常规的Activity

这里是一个当设备是大屏幕时(由目录名称中的 large 限定符指定)给一个 activity 添加两个 fragment 的布局文件的例子。

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);
    }
}

如果你使用 v7 appcompat 库,你的 activity 应该继承ActionBarActivity,它是FragmentActivity
的一个子类(更多信息,参见添加操作栏)。

注意:当你通过在布局 XML 中定义 fragment 来添加 fragment 到 activity 时,你不能在运行时删除这个 fragment。如果你计划根据用户操作换入或换出 fragment,你必须在 activity 第一次启动时添加 fragment 到 activity,这会在下节课介绍。

上一课下一课

时间: 2024-10-31 12:42:47

安卓训练-开始-使用 Fragment 构造动态 UI-创建 Fragment的相关文章

Android学习路线(二十一)运用Fragment构建动态UI——创建一个Fragment

你可以把fragment看成是activity的模块化部分,它拥有自己的生命周期,接受它自己的输入事件,你可以在activity运行时添加或者删除它(有点像是一个"子activity",你可以在不同的activity中重用它).本课将向你展示如何使用Support Libaray继承 Fragment 类来让你的应用能够兼容正在运行Android 1.6的设备. 提示: 如果你决定你的应用需求的最低API级别是11或者更高,那么你不需要使用Support Library,你可以直接使用

安卓训练-开始-使用 Fragment 构造动态 UI-与其他 Fragment 通信

与其他 Fragment 通信 上一课 下一课 这节课教你 定义接口 实现接口 发送消息到一个 Fragment 你还需要阅读 Fragments 试试 下载示例 FragmentBasics.zip 为了重用 Fragment UI 组件,你应该把每个 Fragment 构造成定义自己的布局和行为的完整的自包含的模块化的组件.一旦你定义了这些可重用的 Fragment,你可以把它们关联到一个 Activity 并使用应用逻辑连接它们实现整体的组合 UI. 通常你希望一个 Fragment 与其

Android学习路线(二十)运用Fragment构建动态UI

要在Android系统上创建一个动态或者多面板的用户界面,你需要将UI组件以及activity行为封装成模块,让它能够在你的activity中灵活地切换显示与隐藏.你可以使用Fragment类来创建这些模块,它们能够表现得有些像嵌套的activity,它们定义着自己的布局,管理自己的生命周期. 当一个fragment指定了它自己的布局,它可以在activity中和其他的fragment配置为不同的组合,这样就能够为不同的屏幕尺寸来修改你的布局配置(在小屏幕上一次展现一个fragment,而在大屏

Android学习路线(二十二)运用Fragment构建动态UI——构建一个灵活的UI

先占个位置,下次翻译 :p When designing your application to support a wide range of screen sizes, you can reuse your fragments in different layout configurations to optimize the user experience based on the available screen space. For example, on a handset devi

Android学习路线(二十三)运用Fragment构建动态UI——Fragment间通讯

先占个位置,下次翻译 :p In order to reuse the Fragment UI components, you should build each as a completely self-contained, modular component that defines its own layout and behavior. Once you have defined these reusable Fragments, you can associate them with

9) 十分钟学会android--使用Fragment建立动态UI

为了在 Android 上为用户提供动态的.多窗口的交互体验,需要将 UI 组件和 Activity 操作封装成模块进行使用,这样我们就可以在 Activity 中对这些模块进行切入切出操作.可以用 Fragment 创建这些模块,Fragment 就像一个嵌套的 Activity,拥有自己的布局(Layout)并管理自己的生命周期. Fragment 定义了自己的布局后,它可以在 Activity 中与其他 Fragment 生成不同的组合,从而为不同的屏幕尺寸生成不同的布局(小屏幕一次也许只

安卓训练-开始-使用 Fragment 构造动态 UI-构造灵活的 UI

构造灵活的 UI 上一课 下一课 这节课教你 在运行时添加 Fragment 到 Activity 替换 Fragment 你还需要阅读 Fragments 支持平板和掌上设备 试试 下载示例 FragmentBasics.zip 当你为支持大范围的屏幕尺寸设计你的应用时,你可以在不同的布局配置中重用你的 fragment,根据可用的屏幕空间优化用户体验. 例如,在一个手持设备上,单栏用户界面中每次只显示一个 fragment 可能比较合适.相反地,在一个平板上,有更宽的屏幕尺寸展示更多的信息给

Android学习路径(22)应用Fragment建立动态UI——构建一个灵活UI

当你设计你的应用来支持多个屏幕尺寸.你能够基于可用的屏幕空间通过在不同的布局上重用fragment来优化用户体验. 比如,在一个手机上.使用单面板(一次仅仅显示一个fragment)的用户体验更加合适.For example, on a handset device it might be appropriate to display just one fragment at a time for a single-pane user interface. 相反,你可能希望在一个可以展示很多其它

Android UI编程(8)——动态加载Fragment

通过动态加载fragment实现在一个Activity拥有3种不同的布局,直接看效果图吧: 常规模式下: 点击家居控制: 代码: AndroidManifest.xml--没有做任何修改,创建工程默认 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package