一播急、fragment與Activity
fragment 代表Activity在工作,它的狀態(tài)也反應(yīng)了Activity的狀態(tài)自晰。fragment的生命周期方法是由Activity來(lái)調(diào)用的凿试,而不是由操作系統(tǒng)來(lái)調(diào)用的。Activity由ActivityManager來(lái)管理平夜;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中無(wú)法切換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)坎穿、通過(guò)代碼的方式展父,連接布局文件中生成的組件;
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衡载,不要問(wèn)為什么,用就是了隙袁。
六、如果不考慮兼容性問(wèn)題弃榨,就不必使用支持庫(kù)了菩收。
直接繼承android.app.Activity;
直接繼承android.app.Fragment鲸睛;不使用getSupportFragmentManager()方 ??法娜饵,而使用
getFragmentManager()方法。