你能够把fragment看成是activity的模块化部分。它拥有自己的生命周期,接受它自己的输入事件,你能够在activity执行时加入或者删除它(有点像是一个“子activity”。你能够在不同的activity中重用它)。本课将向你展示怎样使用Support Libaray继承 Fragment 类来让你的应用能够兼容正在执行Android
1.6的设备。

Demo下载:http://download.csdn.net/detail/sweetvvck/7757891

提示: 假设你决定你的应用需求的最低API级别是11或者更高,那么你不须要使用Support Library,你能够直接使用包括Fragment类的平台相关的APIs。

本课主要重点是使用Support Library的APIs。这和已经包括了Fragment类的平台版本号的差别是使用了一个指定的包签名以及一些略微不同的API名称。

在你開始这堂课之前,你必需要设置好你的项目,让他使用Support Library。假设你之前没有使用过Support Library。跟着Support Library Setup 文档来设置你的项目使用v4库。你也能够使用v7
appcompat
 库让你的应用activity可以使用action bar,它可以兼容到Android 2.1 (API level 7) 而且相同包括Fragment APIs。

创建一个Fragment


要创建一个Fragment,首先继承Fragment 类。然后覆盖基本的生命周期方法来插入了你的应用逻辑,类似你在Activity 类中所做的。

创建一个Fragment 与activity的一个不同点是,你必须使用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须要实现其它的回调方法。这样就行同意你在它在actvity中被加入或移除时管理它的状态,就像是activity切换时它的生命周期状态。比如,当activity的onPause() 方法被调用。全部它内部的fragment都会收到onPause()方法的回调。

很多其它关于fragment生命周期以及回调方法的信息,请查看Fragments 开发向导。

使用XML向activity中加入一个fragment


因为fragment是可重用的,模块化UI组件。它的每一个实例都必须和一个父FragmentActivity关联。你能够通过在你的activity的XML布局文件里定义fragment来获取这个关联。

提示: FragmentActivity 是在Support
Library中提供的特殊的activity,用于处理在低于API级别为11的系统上使用fragment。假设你支持的最低系统版本号的API级别是11或者更高。那么你能够直接使用普通的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 library,你的activity中应该要使用ActionBarActivity。它是FragmentActivity 的子类(很多其它信息。请查看Android学习路线(七)设置Action
Bar
)。

提示: 当你在activity的XML布局文件里加入一个fragment时,你不能再执行时移除这个fragment。

假设你希望在用户交互中隐藏于现实你的fragment,你就必须在activity第一次启动时将fragment加入到activity中,在下堂课中会讲到。

Android学习路线(二十一)运用Fragment构建动态UI——创建一个Fragment的更多相关文章

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

    要在Android系统上创建一个动态或者多面板的用户界面,你须要将UI组件以及activity行为封装成模块.让它可以在你的activity中灵活地切换显示与隐藏. 你可以使用Fragment类来创建 ...

  2. android 学习随笔二十一(内容提供者 )

    一.内容提供者* 应用的数据库是不允许其他应用访问的* 内容提供者的作用就是让别的应用访问到你的私有数据* 自定义内容提供者,继承ContentProvider类,重写增删改查方法,在方法中写增删改查 ...

  3. Android学习路线(十一)管理Activity的生命周期

    当一个用户进入.退出,再次进入你的应用时,你的应用中的Activity 会在它的生命周期的各个状态下切换. 比如,当你的activity第一次启动.它出如今系统的前方接受用户的焦点.在这个过程中,An ...

  4. Android学习(二十一)OptionsMenu选项菜单

    一.OptionsMenu选项菜单 在应用程序中点击功能按钮会弹出选项菜单,点击可以实现具体功能. 二.实现思路: 1.创建选项菜单: onCreateOptionsMenu(); 2.设置菜单项可用 ...

  5. Android学习路线(二十四)ActionBar Fragment运用最佳实践

    转载请注明出处:http://blog.csdn.net/sweetvvck/article/details/38645297 通过前面的几篇博客.大家看到了Google是怎样解释action bar ...

  6. Android - 用Fragments实现动态UI - 创建Fragment

    你可以把fragment当作activity中的一个活动模块,它有自己的生命周期,自己接收输入消息,可以在activity运行的时候添加和删除(就像可以在其他activity中重用的"子ac ...

  7. 工作不久的安卓开发者,他们是这样规划自己的Android学习路线

    Android开发工作者工作不久的时候,会有一段迷茫期,觉得自己应该再学一点,却不知道从何学起,该怎样规划自己的学习路线呢?今天,我给大家梳理一下Android基础,就像建造房屋一样,要建造一座宏伟的 ...

  8. Android学习路线总结,绝对干货

    title: Android学习路线总结,绝对干货 tags: Android学习路线,Android学习资料,怎么学习android grammar_cjkRuby: true --- 一.前言 不 ...

  9. (转)Android学习路线总结,绝对干货

    一.前言 不知不觉自己已经做了几年开发了,由记得刚出来工作的时候感觉自己能牛逼,现在回想起来感觉好无知.懂的越多的时候你才会发现懂的越少. 如果你的知识是一个圆,当你的圆越大时,圆外面的世界也就越大. ...

随机推荐

  1. 剑指offer-二叉查找树的第 K 个结点

    /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * Tre ...

  2. 编译 Windows 版本的 Unity Mono(2017-03-12 20:59)

    上一篇说了如何编译 Android 下的 mono,这里简要说下编译 windows 版本的 mono,就是 mono.dll,Unity 版本只有一个 mono.dll,官方的 mono,好几个可执 ...

  3. SCU - 4441 Necklace(树状数组求最长上升子数列)

    Necklace frog has \(n\) gems arranged in a cycle, whose beautifulness are \(a_1, a_2, \dots, a_n\). ...

  4. 33、Flask实战第33天:sweetalert提示框

    这节我们继续优化,接收到返回值,我们在前端做一些处理,如:密码修改成功,弹出一个成功的提示框.这个提示框我们采用sweetalert 其中xtalert.js是对上面两个文件的一个封装,使得我们用sw ...

  5. Linux系统运维问题收集

    [Q1]如何修改系统时间? #修改成 2016-11-23 11:10:50 A: date -s 11/23/2016 date -s 11:10:50 date -R   #查看当前时区和时间 [ ...

  6. 【FFT(母函数)+容斥】BZOJ3771-Triple

    [题目大意] 给出 n个物品,价值为别为Xi且各不相同,现在可以取1个.2个或3个,问每种价值和有几种情况? *顺序不同算一种 [思路] 显然是个母函数,A表示每种物品取一个的情况,B表示每种物品取二 ...

  7. 【置换群/模拟】NOIP2005-篝火晚会

    [问题描述] 佳佳刚进高中,在军训的时候,由于佳佳吃苦耐劳,很快得到了教官的赏识,成为了“小教官”.在军训结束的那天晚上,佳佳被命令组织同学们进行篝火晚会.一共有n个同学,编号从1到n.一开始,同学们 ...

  8. [BZOJ4304]/[JZOJ3486]道路改建

    题目大意: 给你一个有向图,你可以把其中某一条单向边改成双向边,使得图中最大的SCC最大. 问SCC最大能是多少,有哪些方案? 思路: 对原图缩点后就变成了一个DAG. 我们在DAG上DP,记录一下从 ...

  9. 输入sql语句,将结果写入到xml文件

    import java.io.FileOutputStream; import java.sql.Connection; import java.sql.DriverManager; import j ...

  10. AIM Tech Round (Div. 1) D. Birthday 数学 暴力

    D. Birthday 题目连接: http://www.codeforces.com/contest/623/problem/D Description A MIPT student named M ...