Android中Fragment可以将UI界面分成多个区块,一般静态或动态添加Fragment。

01.新建Fragment实例

  一个Fragment实例包括两个部分:类对象和布局文件(可视化部分)。

  类对象继承Fragment,重写onCreateView方法,而布局文件作为View实例参数传入。

  a.新建一个布局文件:frag.xml

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="Look! What a beautiful fragment."
android:textSize="40sp"
android:textStyle="italic"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<ImageView
android:src="@mipmap/orange"
android:layout_width="wrap_content"
android:layout_height="300dp" /> </LinearLayout>

  b.新建一个类:fragmentMain.java

 public class fragmentMain extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
//必须重写onCreateView();
//将Fragment的布局文件转成View实例
View view= inflater.inflate(R.layout.frag,null);
return view;
//return super.onCreateView(inflater, container, savedInstanceState);
}
}

02.静态添加

  静态添是在布局文件activity_main.xml 中声明<fragment></fragment>标签,name属性来指定需要添加的Fragment类实例。

  

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:padding="20dp"
android:layout_width="match_parent"
android:layout_height="match_parent"> <TextView
android:textSize="40sp"
android:layout_marginBottom="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Fragment Demo"
/> <fragment
android:id="@+id/fra"
android:name="com.xxxx.xxxx.xxxx.fragmentMain"
android:layout_width="match_parent"
android:layout_height="match_parent"/> </LinearLayout>

03.动态添加

  动态添加指通过代码添加,而不是在布局文件中声明<fragment></fragment>标签,但是此时需要一个容器装载Fragment实例。

  例如如下:activity_main.xml 将LiinearLayout作为容器,此时应为其添加id。

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:padding="20dp"
android:layout_width="match_parent"
android:layout_height="match_parent"> <TextView
android:textSize="40sp"
android:layout_marginBottom="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Fragment Demo"
/>
<LinearLayout
android:id="@+id/fragment"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"> </LinearLayout>
</LinearLayout>

  然后通过代码添加实例。

 //获取FragmentManager实例
FragmentManager fragmentManager=getFragmentManager();
//开始事务
FragmentTransaction trans= fragmentManager.beginTransaction();
//替换在Fragment容器中的Fragment实例
trans.replace(R.id.fragment,new fragmentMain());
//提交
trans.commit();

!注意

  有时导入不是 android.app.FragmentManager;包而是 android.support.v4.app.Fragment;时,如果根据是否向下兼容的情况替换。

  如果是android.support.v4.app.Fragment;包,应该使用 getSupportFragmentManager();获取实例。

  未添加Fragment与添加Fragment的效果如下:

  未添加:

  添加:

  暂时结束咯。

Android学习备忘笺02Fragment的更多相关文章

  1. Android学习备忘笺01Activity

    01.设置视图 在Android Studio新建的项目中,通过 setContentView(R.layout.activity_main);方法将res/layout/activity_main. ...

  2. leaflet 学习备忘

    leaflet 开源js地图工具.非常好用. leaflet参考:http://leafletjs.com/ 特性: 完全开源,可以基于不同的第三方瓦片生成地图. 基于原始GPS,无需转换 可创建离线 ...

  3. UML学习备忘

    两大类UML图: 行为图(behavior diagrams)和结构图(structure diagrams)     行为图将引导系统分析员分析且理清"系统该做些什么"?系统分析 ...

  4. Git学习备忘

    本文参考廖雪峰写的精彩的git学习文档,大家可以直接去官网看原版,我这里只是便于自己记录梳理 原版地址:http://www.liaoxuefeng.com/wiki/0013739516305929 ...

  5. MVC4 学习备忘

    WebConfig文件里添加数据库链接字符: <add name="MovieDBContext(可以自己取字符串名字)" connectionString="Da ...

  6. 一滴一点vim(学习+备忘)

    普通模式: h j k l 分别是左下上右方式移动: :w 保存修改 :q 推出 :wq 保存修改并退出 :q! 放弃修改强制推出 x 删除光标所在位置字符 i 在光标所以位置插入字符 删除类命令: ...

  7. Android系统备忘1

    Android的4种模式 模式 功能 ADB调试system 正常使用 开发者模式开启usb调试recovery 备份,恢复模式 卡刷模式 twrp下开启ADB Sideloadfastboot 线刷 ...

  8. selenium学习备忘

    在做web项目的自动化端到端测试时主要使用的是Selenium WebDriver来驱动浏览器.Selenium WebDriver的优点是支持的语言多,支持的浏览器多.主流的浏览器Chrome.Fi ...

  9. xml 基础学习备忘

    <?xml version="1.0" encoding="UTF-8"? standalone="yes"> 这里的encod ...

随机推荐

  1. C++语言笔记系列之二十——模版

    1.随意输入两个数x和y,输出最大值max. int max(int x, int y) {return x>y? x:y;} 2.函数模版 (1)用一种或者多种通用类型去表示函数--函数模版. ...

  2. 自己写的Android端HttpUtil工具类

    package com.sxt.jcjd.util; import java.io.IOException; import java.io.UnsupportedEncodingException; ...

  3. assert的作用是什么

    assert()宏是用于保证满足某个特定条件,用法是: assert(表达式); 如果表达式的值为假,整个程序将退出,并输出一条错误信息.如果表达式的值为真则继续执行后面的语句. 使用这个宏前需要包含 ...

  4. YTU 2432: C++习题 对象数组输入与输出

    2432: C++习题 对象数组输入与输出 时间限制: 1 Sec  内存限制: 128 MB 提交: 1603  解决: 1152 题目描述 建立一个对象数组,内放n(n<10)个学生的数据( ...

  5. Kotlin 单例

    单例的实现方法,可以通过同伴对象,或者 lazy. 示例: class Hello private constructor() { companion object { val instance = ...

  6. html5--js函数在canvas中的应用

    html5--js函数在canvas中的应用 总结: 1.script中的函数写了要调用 2.rgb()这样的模式的色彩比较适合做变量 3.body的onload事件 4.带参函数 效果: 代码: & ...

  7. 《Visual C++ 2010入门教程》系列二:安装、配置和首次使用VS2010

    作者:董波 日期:2010.6.15 写在前面 在我还在上学的时候,我选择了C++,最初我用VC6作为我的IDE,我看过很多本C++的教材,有的适合我,有的不适合我,其中有一本叫<Visual ...

  8. javascript 二级联动

    <html> <head> <title></title> <meta http-equiv="Content-Type" c ...

  9. 并不对劲的字符串专题(三):Trie树

    据说这些并不对劲的内容是<信息学奥赛一本通提高篇>的配套练习. 并不会讲Trie树. 1.poj1056-> 模板题. 2.bzoj1212-> 设dp[i]表示T长度为i的前 ...

  10. SpringBoot项目以服务器方式启动

    SpringBoot项目,如果未引入Web相关依赖,不会以服务器方式进行启动,会以应用的方式启动并结束 <dependency> <groupId>org.springfram ...