fragmentTransaction与fragment生命周期

一个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会被调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值