你能够把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. 2018 ACM-ICPC 焦作网络赛

    Problem A Problem B 简单题,做下背包就好了. Problem C Problem D Problem E Problem F Problem G Problem H Problem ...

  2. CodeForces 734E Anton and Tree

    $dfs$缩点,树形$dp$. 首先将连通块缩点,缩点后形成一个黑白节点相间的树.接下来的任务就是寻找一个$root$,使这棵树以$root$为根,树的高度是最小的(也就是一层一层染色).树形$dp$ ...

  3. 洛谷P2236 HNOI2002 彩票 [暴搜]

    题目传送门 彩票 分析: 虽然题目标签上标的是Splay,但我一个蒟蒻至今也沒掌握平衡树,所以就索性一个暴搜,加一点剪枝就水过去了- 代码: #include<cstdio> #inclu ...

  4. Java浮点类型的格式化

    概述 基于Java,介绍将浮点类型小数进行格式化的方案. 正文 在Java中,用于格式化小数的类是java.text.DecimalFormat,比如你可以这样使用: double data = 33 ...

  5. 在Eclipse调试Weblogic上的web项目

    概述 参考原文:weblogic debug配置. weblogic版本:BEA WebLogic Platform 8.1 工作原理: 利用java tools里面的jdb程序连接远程的JAVA虚拟 ...

  6. 36、Flask实战第36天:客户端权限验证

    编辑cms_base.html <li><a href="#">{{ g.cms_user.username }}<span>[超级管理员]&l ...

  7. 安卓 内容提供者 sql 区别

    韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 内容提供者 用户只需关心 操作数据的url 就可以了. 实现 了 应用间 数据共享.可以操作数据 ...

  8. 【tarjan+缩点】BZOJ1051-受欢迎的牛

    [题意] 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也认为牛C受欢迎. ...

  9. Nginx简单认识

    写在前面: 最近一直在学习,这几天了解了下Nginx,虽然看了些资料,斌哥也讲解了一下,但是貌似缺少了实践,就显得对其认识的不那么深刻.这里也还是简单的记录下把. 什么是Nginx? Nginx (e ...

  10. Redis简单入门认识

    写在前面: 最近一直都在按照老大的学习路线来进行学习,这几天看了下redis,从刚开始的摸不着头脑,到后面慢慢的查资料,对其逐渐有了简单的了解,也通过一个与ssm框架整合的小demo去动手实践 了,知 ...