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学习路线总结,绝对干货
一.前言 不知不觉自己已经做了几年开发了,由记得刚出来工作的时候感觉自己能牛逼,现在回想起来感觉好无知.懂的越多的时候你才会发现懂的越少. 如果你的知识是一个圆,当你的圆越大时,圆外面的世界也就越大. ...
随机推荐
- 17-7-26-react-router入门
完蛋了,上司最近都和颜悦色的,搞得我跑路的决心大大减退,不过还是要跑路.毕竟面向工资编程.今天一天基本都在挑项目的CSS,由于是别人哪里直接copy的,然后css我也直接copy的codepen上的源 ...
- Linux系统的目录结构及各目录作用
使用tree命令查看Linux目录结构,这个命令默认是没有安装的,需要手动安装一下. [root@xuexi xf]# mount /dev/sr0 /media/ mount: /dev/sr0 写 ...
- 【BZOJ 1815】【SHOI 2006】color 有色图
http://www.lydsy.com/JudgeOnline/problem.php?id=1815 这道题好难啊,组合数学什么根本不会啊qwq 题解详见08年的Pólya计数论文. 主要思想是只 ...
- [LOJ6191][CodeM]配对游戏(概率期望DP)
n次向一个栈中加入0或1中随机1个,如果一次加入0时栈顶元素为1,则将这两个元素弹栈.问最终栈中元素个数的期望是多少. 首先容易想到用概率算期望,p[i][j][k]表示已加入i个数,1有j个,总长为 ...
- 【BFS】Power Hungry Cows
Power Hungry Cows Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 5522 Accepted: 1384 ...
- [xsy1144]选物品
题意:给定$a_{1\cdots n},b_{1\cdots n}$,询问是给定$l,r$,找出$a',b'$使得$\sum\limits_{i=l}^r\max(\left|a'-a_i\right ...
- 【动态规划】CDOJ1271 Search gold
方格取数. 但由于题意说金币数<0就死了,就不能继续转移. #include<cstdio> #include<algorithm> #include<cstrin ...
- 【构造】Tinkoff Challenge - Final Round (Codeforces Round #414, rated, Div. 1 + Div. 2) D. Labelling Cities
考试的时候想的是,将所有的完全子图缩起来,然后如果剩下的是一条链,依次对其进行标号即可. 看了官方题解,发现完全子图这个条件太强了,缩点的条件仅仅需要保证原本两个点的“邻接表”相同即可.(注意这里的“ ...
- 【SAM】POJ1509-Glass Beads
[题目大意] 求一个循环数列的最小表示法. [思路] 把原创复制一遍放在后面,建立SAM,从s按字典序开始跑长度L即可. 板子来源(作者见连接内):
- Codeforces Round #344 (Div. 2) D. Messenger kmp
D. Messenger 题目连接: http://www.codeforces.com/contest/631/problem/D Description Each employee of the ...