一个Activity可以管理多个fragment,非常方便的切换视图。
FragmentTransaction称为fragment事务,可以进行add,remove,replace,show,hide操作。
启动事务:
FragmentManager mFragmentManager=getSupportFragmentManager();//类要继承FragmentActivity
FragmentTransaction transaction = mFragmentManager.beginTransaction();
项目中经常用到底部选项卡:这时候就要用到fragment进行切换。
一般我是用集合存储fragment
Fragment[] fragments=new Fragment[3];//存放fragment集合
//先开启事务
FragmentTransaction transaction=mFragmentManager.beginTransaction();
//获取当前页
String currentTag = "fragment" + mCurrentItem;
//使用findFragmentById()或findFragmentByTag()方法来获取指定Fragment。
Fragment lastFragment = mFragmentManager.findFragmentByTag(currentTag);
//隐藏当前页
if (lastFragment != null)
transaction.hide(lastFragment);
//获取将要显示页
String toTag = "fragment" + toItem;
Fragment currentFragment=mFragmentManager.findFragmentByTag(toTag);
if (currentFragment != null)
transaction.show(currentFragment);
else {
//不存在则添加新的fragment
currentFragment = makeFragment(toItem);
if (currentFragment != null)
transaction.add(R.id.fl_contain,currentFragment, toTag);
}
transaction.commit();
这是makeFragment方法
private Fragment makeFragment(int curItem) {
Fragment fragment = null;
switch (curItem) {
case 1:
if (fragments[0] == null) {
fragments[0] = new OneFragment();
}
fragment = fragments[0];
break;
case 2:
if (fragments[1] == null) {
fragments[1] = new TwoFragment();
}
fragment = fragments[1];
break;
case 3:
if (fragments[2] == null) {
fragments[2] = new ThreeFragment();
}
fragment = fragments[2];
break;
}
return fragment;
}
transaction.add方法: fragment 生命周期:从onAttach—>onCreateView()->onActivityCreated()->onStart()->onResume()
transaction.hide show方法:Fragment的生命周期方法并不会被执行,只有onHiddenChanged会被调用