一、fragment與Activity
fragment 代表Activity在工作,它的狀態(tài)也反應(yīng)了Activity的狀態(tài)。fragment的生命周期方法是由Activity來調(diào)用的,而不是由操作系統(tǒng)來調(diào)用的。Activity由ActivityManager來管理;Activity中的fragmentManager負(fù)責(zé)調(diào)用隊(duì)列中的fragment的生命周期方法;
二、fragment的生命周期
啟動(dòng):onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume()
關(guān)閉:onPause()->onStop()->onDestroyView()->onDestroy()->onDetach();
fragmentManager會(huì)使得fragment與Activity的狀態(tài)保持一致。
三、在Activity中使用fragment的二種方式
1)、添加fragment到Activity的布局中;
2)、在Activity有代碼中添加fragment;
第一種方式不夠靈活,在Activity中無法切換fragment;
第二種方式比羅復(fù)雜,也是唯一一種在運(yùn)行時(shí)可以控制fragment的方式(新增、刪除、代替fragment);
四、創(chuàng)建fragment
1)、定義fragment的布局文件;
2)、創(chuàng)建fragment類,并設(shè)置視圖布局;
@Override
publicView onCreateView(LayoutInflater inflater,@NullableViewGroup container,@NullableBundle savedInstanceState) {
View v=inflater.inflate(R.layout.fragment_crime,container,false);
returnv;
}
3)、通過代碼的方式,連接布局文件中生成的組件;
4)、用fragmentManager管理fragment中,并將它添加到Activity的視圖層中;
protected voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_crime);
FragmentManager fManager=this.getSupportFragmentManager();
Fragment fragment=fManager.findFragmentById(R.id.activity_crime);
if(fragment==null){
fragment=newCrimeFragment();
fManager.beginTransaction().add(R.id.activity_crime,fragment).commit();
}
}
五、強(qiáng)烈建議以后使用Fragment,不要問為什么,用就是了。
六、如果不考慮兼容性問題,就不必使用支持庫了。
直接繼承android.app.Activity;
直接繼承android.app.Fragment;不使用getSupportFragmentManager()方 ??法,而使用
getFragmentManager()方法。