程序人生Android知识Android开发

UI fragment与fragment 管理器

2017-01-04  本文已影响111人  五人行

一、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()方法。

上一篇 下一篇

猜你喜欢

热点阅读