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. LoadRunner系列之—-03 用Java Vuser协议编写接口测试脚本

    待测试接口用java语言实现,且项目中调用该接口需要用专门的jar包.这种情况可以用Java Vuser协议实现接口调用脚本,类似java代码. 代码样例如下: /* * LoadRunner Jav ...

  2. Android TabHost设置setCurrentTab(index),当index!=0时,默认加载第一个tab问题解决方法。

    最近在用TabHost,默认希望显示第2个tab,发现总是加载第三个tab的同时加载第一个,解决方法如下: 1.首先查看addTab(TabSpec tabSpec)源代码: /** * Add a ...

  3. STM32的精确延时

    /*---------------------------------------------------------- 文件名:systick.c 文件描写叙述:sysTick 系统滴答时钟1us中 ...

  4. mysql最新版中文参考手册在线浏览

    MySQL是最流行的开放源码SQL数据库管理系统,具有快速.可靠和易于使用的特点.同时MySQL也是一种关联数据库管理系统,具有很高的响应速度和灵活性.又因为mysql拥有良好的连通性.速度和安全性, ...

  5. linux下信息分屏显示

    在字符界面下,经常遇到ls之后信息太长,只能看到最后一页的信息,这时就需要分屏显示了. 常用: ls | less 这样就可以分屏显示了,并可以用PgUp和PgDn来上下翻页. 也可以用: ls | ...

  6. [NOIP2012] day2 T3疫情控制

    题目描述 H 国有 n 个城市,这 n 个城市用 n-1 条双向道路相互连通构成一棵树,1 号城市是首都,也是树中的根节点. H 国的首都爆发了一种危害性极高的传染病.当局为了控制疫情,不让疫情扩散到 ...

  7. USACO45 lights 电灯(折半搜索)

    刚刚上一篇博客才D了队长一发,心里虚的慌......万分感谢队长给讲折半搜索!!听说这题可以高斯消元(可是我不会...貌似折半我也不会) 这题呢,一想到就是爆搜啦,然而,爆搜2^35必跪,折半搜索,就 ...

  8. RDD的基本命令

    1 创建RDD intRDD=sc.parallelize([3,1,2,5,6]) intRDD.collect()[4, 2, 3, 6, 7] 2 单RDD转换 (1) MAP def addo ...

  9. idea output 悬浮浮动问题

    参考:https://www.cnblogs.com/thinkingandworkinghard/p/6306800.html 点这个就ok

  10. TibetanFont | ཡིག་གཟུགས། | 藏文字体

    1.Microsoft Himalaya 微软喜马拉雅字体 2007年1月30日,微软公司向全球市场同步发布了其最新操作系统Windows Vista,并自带藏文字体和输入法,Windows Vist ...