***前言***1.Fragment——碎片2.Fragment的生命周期3.Fragment和Activity的通信总结
前言就是心血来潮突然想写fragement的博客啊!
1.Fragment——碎片1.Fragment——碎片
它是嵌入到Activity中的片段,google在使用Activity时,发现Activity耗费资源的更多,为了能够复用界面中的一部分组件,推出Fragment。也就是一个Activity可以包含多个Fragment,每个Fragment可以进行复用,从而节约资源。Fragment不能独立存在,需要依附于Activity,Fragment有自己的生命周期,可以接收输入事件。通过Activity可以动态添加或删除Fragment。
如何使用Fragment?
(1)静态创建Fragment
步骤:
1)为Fragment创建一个布局
2)定义一个Fragment子类,实现OncreateView方法,加载之前定义的布局
3)在Activity的布局文件中引用定义的Fragment
【案例】
fragment_a.xml
AFragment.java
activity_main.xml
效果:
(2)动态创建Fragment
步骤:
1)创建Fragment对应的布局文件
2)创建Fragment的子类,加载这个布局文件
3)使用java代码创建Fragment的实例
4)使用FragmentManager、FragmentTransaction
4.1)获取FragmentManager对象
4.2)打开FragmentTransaction,获取transaction对象
4.3)在指定容器中加载新的Fragment,使用transaction的add方法
4.4)提交,让加载生效
fragment_b.xml
BFragment.java
activity_main2.xml
MainActivity2.java
效果:
【案例】移除Fragment
transaction.remove(fragment);
修改activity_main2.xml
修改MainActivity2.java
效果:
【案例】将移除的fragment加入到回退栈
效果:
使用向导的方式创建fragment。
项目结构:
fragment_c.xml
CFragment.java
activity_main3.xml
activity_main4.xml
MainActivity4.java
效果:
日志:
测试:
1)静态加载,看onInflate是否执行
2)动态加载,看onInflate是否执行
3)动态加载,看onAttach、onCreate执行情况
1.fragment的替换(附加)
使用FragmentTransaction对象的replace方法,将布局中原有的fragment替换成新的Fragment。
replace=remove+add;
【案例】
fragment_a.xml
fragment_b.xml
activity_main.xml
AFragment.java
BFragment.java
MainActivity.java
效果:
2.Fragment的生命周期2
【案例】体验
测试1(替换Afragment,并且将其加入回退栈):
从启动到运行:
运行到销毁视图:
销毁视图到重新显示(从回退栈中返回):
测试2(被替换的AFragment不加入回退栈):
从启动到运行:
从运行到销毁:
使用生命周期的作用:
在每个阶段实现不同的事务。
参考代码:
修改AFragment.java
参考图:
(1)Fragment和Activity互相获取对方的组件
例如:Fragment获取Activity的TextView;Activity获取Fragment的TextView;
【案例】Fragment获取Activity
Fragment中一个Button点击后获取Activity中的TextView
fragment_c.xml
activity_main2.xml
MainActivity2.java
CFragment.java
效果:
代码以图片形式给大家参考和学习一下下,希望大家可以自己 *** 作打一遍,这样理解后手不会生了!
么么叽么么叽么么哒!
后续板块在这里!
点这里看后面!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)