一些關(guān)于Fragment的基本概念
fragment翻譯為碎片草则,是從Android3.0開始新增的概念琉兜,目的是為了適配平板爵卒。與Activity很相似陶因,也有自己的生命周期颂斜,可以從運行中的activity中添加或移除巩割,但是 一個fragment必須是嵌入在一個activity中莫杈,同時fragment的生命周期受activity的影響抵赢。
需要注意的是在使用fragment時闹瞧,需要導入import android.support.v4.app.Fragment
而非import android.app.Fragment
绑雄,原因是向下兼容。
生命周期
Fragment生命周期.png
先看一張官方的圖片夹抗,除onReStart()方法外activity的生命周期方法都在fragment生命周期方法中绳慎。
- onAttach()
依附在activity上 - onCreateView()
加載一個布局 顯示Fragment的內(nèi)容 - onActivityCreated()
在這個onCreateView方法中初始化的view ,完全初始化 - onDestroyView()
在oncreateView方法里面初始化的view銷毀了 - onDetach()
取消依附
而在日常開發(fā)中需要注意的是如下兩個方法:
- onCreateView()
此方法必須返回一個顯示的View,所以此方法必須重寫 - onDestroy()
通常而言,如果需要做一些收尾的工作杏愤,可以在onDestroy()或者onDetach()方法中靡砌。但是由于activity中的習慣,所以很多開發(fā)者會選擇在onDestroy()方法中珊楼,此處隨意通殃。
總結(jié)幾點
1.onAttach() 和 onCreate() 只在 Fragment與Activity 第一次關(guān)聯(lián)時調(diào)用
2.onDestroy() 和 onDetach() 只在 Fragment與Activity 銷毀時才會被調(diào)用。
3.根據(jù)之前兩點厕宗, 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();