《第一行代码--Android》读书笔记之碎片
来源:互联网 发布:linux 查找内容 编辑:程序博客网 时间:2024/06/10 13:29
碎片的基本用法:
碎片(fragment)是能嵌在活动中的UI片段,相当于mini型的Activity,有完整的布局,和生命周期。
- 一个简单的碎片的创建过程:
- 新建一个碎片布局,比如,fragment.xml
- 自定义一个继承自Fragment类的类,并重写onCreateView()方法,动态加载碎片布局。
- 在被嵌入碎片的Activity的布局文件中加入< fragment>标签,要注意添加android:name属性来显式指明要添加碎片的类名,完整的包名不能省略。
比较一下活动的创建过程也很类似,但不同的是Activity要在onCreate()方法中调用setContextView()方法来动态加载布局。
public class LeftFragment extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view=inflater.inflate(R.layout.left_fragment,container,false); return view; }}
动态加载碎片
- 同样地,创建碎片布局和自定义碎片类
- 在待添加碎片的活动中添加一个布局作为碎片的容器,比如FrameLayout
- 创建待添加的碎片类的实例
- 在活动中获取FragmentManager,通过getFragmentManager()得到
- 通过FragmentManager开始一个事务fragmentTransaction,fragmentManager.beginTransaction()
- 利用FragmentTransaction replace(int containerViewId, Fragment fragment)方法向容器加入碎片
- 在提交事务之前调用addToBackStack()方法,将事务添加到返回栈
- 通过commit()方法提交事务
碎片与活动间通信
碎片和活动都是不同的类当中,所以它们之间的通信要借助一个媒介,这个桥梁就是上面所提到的的FragmentManager。
- 在活动中要获得碎片的实例,可以通过FragmentManager.findFragmentById()从布局文件中获取碎片的实例,通过此碎片实例就可以调用碎片里的方法了。
- 在碎片中要获得活动的实例,可以通过getActivity()方法来得到与当前碎片相关联的活动实例。
- 碎片与碎片间的通信,可以通过它们共同关联的活动做媒介。
RightFragment rightFragment=(RightFragment)getFragmentManager().findFragmentById(R.id.Right_Fragment);
碎片的生命周期
- onAttach()//当一个Fragment对象关联到一个Activity时调用。
- onCreate()//初始创建Fragment对象时调用。
- onCreateView()//创建与Fragment对象关联的View视图时调用,即加载fragment布局的时候调用。
- onActivityCreated()//当Activity对象完成自己的onCreate方法时调用,确保与之关联的活动已被创建
- onStart()//Fragment对象在ui可见时调用。
- onResume()//Fragment对象的ui可以与用户交互时调用。
- onPause()//Fragment对象可见,但不可交互。有Activity对象转为onPause状态时调用。
- onStop()//有空间完全遮挡;或者宿主Activity对象转为onStop状态时调用。
- onDestroyView()//Fragment对象清理view资源时调用,也就是移除fragment中的视图。
- onDestroy()//Fragment对象完成对象清理View资源时调用。
- onDetach()//Fragment对象与Activity对象解除关联时调用。
与活动类似,当位于返回栈的处于停止状态的碎片被系统回收,可以通过onSaveInstanceState()方法保存数据,再通过onCreate()或onCreateView()中的bundle参数获得保存下来的数据。
限定符
用限定符可以实现动态加载布局,在不同的设备或者同一设备的不同状态下加载不同的布局。
常用的Android限定符
- land 提供给横屏设备的资源
- port 提供给竖屏设备的资源
- small 提供给小屏幕设备的资源
- normal 提供给中等屏幕设备的资源
- large 提供给大屏幕设备的资源
参考查阅的资料和文献:
Fragment学习—–简介与生命周期研究 http://blog.csdn.net/qianfu111/article/details/8948110
0 0
- 《第一行代码--Android》读书笔记之碎片
- 《第一行代码》读书笔记(四)----碎片
- 《第一行代码--Android》读书笔记之前言
- 第一行代码之fragment碎片
- 碎片(Fragment)--《第一行代码Android》笔记
- 《第一行代码Android》读书笔记
- Android第一行代码读书笔记
- 《第一行代码Android》---读书笔记
- 读书笔记 《第一行代码》 第四章 碎片相关
- 《第一行代码--Android》读书笔记之UI篇
- 《第一行代码--Android》读书笔记之广播机制
- 《第一行代码--Android》读书笔记之数据存储
- 《第一行代码--Android》读书笔记之内容提供器
- 《第一行代码--Android》读书笔记之使用通知和多媒体
- 《第一行代码--Android》读书笔记之网络编程
- 读书笔记|《第一行代码android》之组件篇
- 第一行代码-Fragment碎片
- android第一行代码读书笔记2
- Android NDK 环境搭建 之 起始篇NDK HelloWorld
- Composite(组合)设计模式
- 黑马程序员--Java笔记08--多线程 创建、安全问题、线程间通信
- 多线程中栈空间的分配 http://biancheng.dnbcw.info/linux/303270.html
- PhoneGap插件调用Java流程源码分析(三)
- 《第一行代码--Android》读书笔记之碎片
- ---Maya&Python---001---
- svn: E175002: java.lang.RuntimeException: Could not generate DH keypair
- Hive设置参数的三种方法
- 详说字符编码
- 理解hibernate中持久化和序列化
- elasticsearch spring 集成
- CentOs安装Maven
- Android 速度检测demo