android回顾之三 Fragment

一些关于Fragment的基本概念

fragment翻译为碎片,是从Android3.0开始新增的概念,目的是为了适配平板。与Activity很相似,也有自己的生命周期,可以从运行中的activity中添加或移除,但是 一个fragment必须是嵌入在一个activity中,同时fragment的生命周期受activity的影响。
需要注意的是在使用fragment时,需要导入import android.support.v4.app.Fragment而非import android.app.Fragment,原因是向下兼容。

生命周期

android回顾之三 Fragment_第1张图片
Fragment生命周期.png

先看一张官方的图片,除onReStart()方法外activity的生命周期方法都在fragment生命周期方法中。

  • onAttach()
    依附在activity上
  • onCreateView()
    加载一个布局 显示Fragment的内容
  • onActivityCreated()
    在这个onCreateView方法中初始化的view ,完全初始化
  • onDestroyView()
    在oncreateView方法里面初始化的view销毁了
  • onDetach()
    取消依附

而在日常开发中需要注意的是如下两个方法:

  • onCreateView()
    此方法必须返回一个显示的View,所以此方法必须重写
  • onDestroy()
    通常而言,如果需要做一些收尾的工作,可以在onDestroy()或者onDetach()方法中。但是由于activity中的习惯,所以很多开发者会选择在onDestroy()方法中,此处随意。

总结几点
1.onAttach() 和 onCreate() 只在 Fragment与Activity 第一次关联时调用
2.onDestroy() 和 onDetach() 只在 Fragment与Activity 销毁时才会被调用。
3.根据之前两点, addToBackStack()和add()、replace() 只涉及 onCreateView() 和 onDestroyView() 这之间的生命周期。
4.hide() 和 show()方法不涉及生命周期的改变

使用方法

// 得到FragmentManager
FragmentManager manager = getSupportFragmentManager();
// 得到FragmentTransacation
FragmentTransaction transaction = manager.beginTransaction();
  • add(添加)
    transaction.add(R.id.ll_main_container, fragment1);
  • replace(替换)
    transaction.replace(R.id.ll_main_container, fragment2);
  • remove(移除)
    transaction.remove(fragment3);

操作完成后一定要transaction.commit();

你可能感兴趣的:(android回顾之三 Fragment)