Fragment 笔记

简介

碎片、片段,Fragment 的翻译可以让人直观的了解到它设计的思路和用法。
Android 3.0 以上。


from google develop
from google develop

生命周期及相关方法

  • onAttach(Activity)

Fragment和Activity建立关联的时候调用。

  • onCreate(Bundle)

系统会在创建片段时调用此方法。您应该在实现内初始化您想在片段暂停或停止后恢复时保留的必需片段组件。

  • onCreateView(LayoutInflater, ViewGroup, Bundle)

系统会在片段首次绘制其用户界面时调用此方法。 要想为您的片段绘制 UI,您从此方法中返回的 View 必须是片段布局的根视图。如果片段未提供 UI,您可以返回 null。

  • onActivityCreated(Bundle)

当Activity中的onCreate方法执行完后调用。

  • onPause()

系统将此方法作为用户离开片段的第一个信号(但并不总是意味着此片段会被销毁)进行调用。 您通常应该在此方法内确认在当前用户会话结束后仍然有效的任何更改(因为用户可能不会返回)。

onDestroyView方法:Fragment中的布局被移除时调用。
onDetach方法:Fragment和Activity解除关联的时候调用。

运行一下程序,可以看到打印日志如下:

出自 [郭霖大神的 CSDN](http://blog.csdn.net/guolin_blog/article/details/8881711)

这时点击一下home键,打印日志如下:

出自 [郭霖大神的 CSDN](http://blog.csdn.net/guolin_blog/article/details/8881711)

如果你再重新进入进入程序,打印日志如下:

出自 [郭霖大神的 CSDN](http://blog.csdn.net/guolin_blog/article/details/8881711)

然后点击back键退出程序,打印日志如下:

出自 [郭霖大神的 CSDN](http://blog.csdn.net/guolin_blog/article/details/8881711)

Fragment 的创建

简单的 Fragment 可以通过重写 onCreateView() 方法来实现。

onCreateView(LayoutInflater inflater, ViewGroup container,BundlesavedInstanceState) 

一般使用该方法返回一个 View 对象提供给 Activity ,
所以在这里加载 xml 布局文件,参数中,
container :参数是布局将插入到的父ViewGroup(来自 Activity 的布局)
savedInstanceState :在恢复 Frafment 时,提供上一片段实例相关数据的 Bundle
inflater : 可以用来获取 xml 文件的控件。

View view = inflater.inflate(R.layout.activity_news_two,container,false);
ListView newslistView=(ListView) view.findViewById(R.id.show_news);
//ListView newslistView = (ListView) getActivity().findViewById(R.id.show_news);
//getActivity() 获取的对象可以用来获取同一个 Activity 上不同的 Fragment 的控件。

inflate 方法的三个参数:
xml 文件的ID;
将作为扩展布局父项的 ViewGroup 对象。传递 container对系统向扩展布局的根视图(由其所属的父视图指定)应用布局参数具有重要意义;
指示是否应该在扩展期间将扩展布局附加至 ViewGroup(第二个参数)的布尔值。

Activity 与 Fragment

  • 动态添加、删除 Fragment

获取 FragmentTransaction 对象

FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.fragment_container,fragment);//添加到的地方
//fragmentTransaction.remove(fragment);
//fragmentTransaction.replace();
//fragmentTransaction.hide();
//fragmentTransaction.show();
fragmentTransaction.commit();
  • 两者的通信
  • 事务栈

调用 addToBackStack(),以将事务添加到片段事务返回栈。 该返回栈由 Activity 管理,允许用户通过按返回按钮返回上一片段状态

transaction.add(R.id.fragment_container,fragment);
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);//

transaction.commit();

点击返回的时候,上面的操作会被全部撤销。
而且这些操作还可以通过setTransition()设置过度动画

setTransition

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,265评论 25 707
  • Fragment 为何产生 同时适配手机和平板、UI和逻辑的共享。 介绍 Fragment也会被加入回退栈中。 F...
    程慕枫阅读 403评论 1 0
  • 片段 Fragment表示 Activity中的行为或用户界面部分。您可以将多个片段组合在一个 Activity ...
    岳小川阅读 785评论 0 3
  • 「大数据」这个概念从2012年开始被广泛传播,尤其是近两年,各大公司,不仅仅是互联网公司,都在谈论它。「大数据」的...
    littlehei阅读 1,520评论 8 24
  • 没想到十字路口又摆在了面前,选哪一条,要想好,更需要自制力,还有气力。下一秒发生什么,没人知道,我的未来是什么,我...
    澔澔阅读 153评论 0 0