Android学习路线(二十一)运用Fragment构建动态UI——创建一个Fragment
你能够把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的更多相关文章
- Android学习路线(二十)运用Fragment构建动态UI
要在Android系统上创建一个动态或者多面板的用户界面,你须要将UI组件以及activity行为封装成模块.让它可以在你的activity中灵活地切换显示与隐藏. 你可以使用Fragment类来创建 ...
- android 学习随笔二十一(内容提供者 )
一.内容提供者* 应用的数据库是不允许其他应用访问的* 内容提供者的作用就是让别的应用访问到你的私有数据* 自定义内容提供者,继承ContentProvider类,重写增删改查方法,在方法中写增删改查 ...
- Android学习路线(十一)管理Activity的生命周期
当一个用户进入.退出,再次进入你的应用时,你的应用中的Activity 会在它的生命周期的各个状态下切换. 比如,当你的activity第一次启动.它出如今系统的前方接受用户的焦点.在这个过程中,An ...
- Android学习(二十一)OptionsMenu选项菜单
一.OptionsMenu选项菜单 在应用程序中点击功能按钮会弹出选项菜单,点击可以实现具体功能. 二.实现思路: 1.创建选项菜单: onCreateOptionsMenu(); 2.设置菜单项可用 ...
- Android学习路线(二十四)ActionBar Fragment运用最佳实践
转载请注明出处:http://blog.csdn.net/sweetvvck/article/details/38645297 通过前面的几篇博客.大家看到了Google是怎样解释action bar ...
- Android - 用Fragments实现动态UI - 创建Fragment
你可以把fragment当作activity中的一个活动模块,它有自己的生命周期,自己接收输入消息,可以在activity运行的时候添加和删除(就像可以在其他activity中重用的"子ac ...
- 工作不久的安卓开发者,他们是这样规划自己的Android学习路线
Android开发工作者工作不久的时候,会有一段迷茫期,觉得自己应该再学一点,却不知道从何学起,该怎样规划自己的学习路线呢?今天,我给大家梳理一下Android基础,就像建造房屋一样,要建造一座宏伟的 ...
- Android学习路线总结,绝对干货
title: Android学习路线总结,绝对干货 tags: Android学习路线,Android学习资料,怎么学习android grammar_cjkRuby: true --- 一.前言 不 ...
- (转)Android学习路线总结,绝对干货
一.前言 不知不觉自己已经做了几年开发了,由记得刚出来工作的时候感觉自己能牛逼,现在回想起来感觉好无知.懂的越多的时候你才会发现懂的越少. 如果你的知识是一个圆,当你的圆越大时,圆外面的世界也就越大. ...
随机推荐
- Oracle实例,具体运用
Oracle关键字的使用 使用insert 添加数据: INSERT INTO 表名 VALUES (加入对应的数); COMMIT; INSERT INTO p_emp VALUES('TO ...
- struts2核心配置之Result
result作用:在struts.xml中,使用<result>元素配置result逻辑视图和物理视图之间的映射 元素属性 属性 说明 是否必须 name 指定逻辑视图的名称(Action ...
- python正则表达式中的分组 group
维基百科:http://wiki.ubuntu.org.cn/Python%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%93%8D%E4%BD%9C ...
- css总结——position
CSS(Cascading Style Sheet),中文翻译为层叠样式表,是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言.在css控制页面中,主要有四种样式:行内样式(style ...
- poj 3464(Trie)Approximations
Approximations Time Limit: 2000MS Memory Limit: 131072K Total Submissions: 419 Accepted: 23 Desc ...
- 2017 icpc 西安网络赛
F. Trig Function 样例输入 2 0 2 1 2 2 样例输出 998244352 0 2 找啊找啊找数列和论文.cosnx可以用切比雪夫多项式弄成(cosx)的多项式,然后去找到了相关 ...
- [Contest20170910]string
给定一个由且仅由字符$'H','T'$构成的字符串$S$ 给定一个最初为空的字符串$T$,每次随机地在$T$的末尾添加$'H'$或者$'T'$ 问当$S$为$T$的后缀时,在末尾添加字符的期望次数 妙 ...
- 【动态规划】Gym - 101201A - Alphabet
题意:一个字符串被定义为“alphabetical”,当且仅当它能够删除一些字符,变成“ab...yz”,给你一个只由小写字母组成的字符串,问你最少插入几个字母,使它变成“alphabetical”的 ...
- [Andrew Stankevich's Contest#21] Lempel-Ziv Compression
Time Limit: 20000/10000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Special Judge ...
- (Mark=转)ehcache memcache redis
Ehcache 在java项目广泛的使用.它是一个开源的.设计于提高在数据从RDBMS中取出来的高花费.高延迟采取的一种缓存方案.正因为Ehcache具有健壮性(基于java开发).被认证(具有apa ...