一、fragment与Activity
fragment 代表Activity在工作,它的状态也反应了Activity的状态。fragment的生命周期方法是由Activity来调用的,而不是由操作系统来调用的。Activity由ActivityManager来管理;Activity中的fragmentManager负责调用队列中的fragment的生命周期方法;
二、fragment的生命周期
启动:onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume()
关闭:onPause()->onStop()->onDestroyView()->onDestroy()->onDetach();
fragmentManager会使得fragment与Activity的状态保持一致。
三、在Activity中使用fragment的二种方式
1)、添加fragment到Activity的布局中;
2)、在Activity有代码中添加fragment;
第一种方式不够灵活,在Activity中无法切换fragment;
第二种方式比罗复杂,也是唯一一种在运行时可以控制fragment的方式(新增、删除、代替fragment);
四、创建fragment
1)、定义fragment的布局文件;
2)、创建fragment类,并设置视图布局;
@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();
}
}
五、强烈建议以后使用Fragment,不要问为什么,用就是了。
六、如果不考虑兼容性问题,就不必使用支持库了。
直接继承android.app.Activity;
直接继承android.app.Fragment;不使用getSupportFragmentManager()方 法,而使用
getFragmentManager()方法。