碎片的基本用法:

碎片(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

更多相关文章

  1. Android(安卓)不可缺少的异步(Thread、Handler、AsyncTask)实例解
  2. Android(安卓)通过源码解析 Fragment 启动过程
  3. Android(安卓)ORM 框架之 greenDAO
  4. Android中Service和Activity相互通信示例代码
  5. android 4.4 Settings分析
  6. android SQLite使用SQLiteOpenHelper类对数据库进行操作
  7. Android-通知Notification全解析
  8. 深入探索 Android(安卓)内存优化(炼狱级别)
  9. 【转】Android最佳性能实践(三)——高性能编码优化

随机推荐

  1. Android获取.Gradle文件中的值和Manifest
  2. 在android中增加 第三方库
  3. Android(安卓)webService访问实例
  4. NDKNDK编程入门笔记
  5. Android 蓝牙通信开发(一) 搜索蓝牙设备
  6. Android垃圾回收实质内容解析
  7. Android两行代码修改给系统状态栏设置透
  8. android设置默认壁纸
  9. [Android] Smali基本语法
  10. Android发展趋势分析