4 第四单元 Fragment的基本使用

一.Fragment介绍

Fragment,英文碎片的意思,早期应用在平板设计中

二、Fragment常用的方法

添加Fragment的方法:add()

1:切换fragment时不会重新创建,会保持fragment的状态,切换前是什么状态切换后还是什么状态
2:一般需要结合hide和show方法一起使用
总结:如果Fragment会频繁的被使用,可以使用add方法

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
FragmentA fragmentA=new FragmentA();
 transaction.add(R.id.main_frame_layout, fragmentA);//<-add()方法添加Fragment
transaction .hide(fragmentB);
transaction.show(fragmentA);

替换Fragment的方法:replace()

1:replace方法,用FragmentA替换FragmentB
2:FragmentA在被replace后被销毁onDestory()

总结:如果旧Fragment无须再次使用,可以使用replace方法将其销毁
使用replace()方法替换Fragment

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
FragmentA  fragmentA= new FragmentA();
transaction.replace(R.id.main_frame_layout, fragmentA);
transaction.commit();

移除Fragment的方法:remove()

1:当FragmentB替FragmentA时,先调用remove()方法移除FragmentA,然后再调用add()方法添加FragmentB
2:此方法调用时,这个FragmentA将会被销毁
总结:移除当前的Fragment,设置为不可见,可能会被销毁

FragmentA  fragmentA= new FragmentA();
transaction.remove(fragmentA)//使用remove()方法移除Fragment
transaction.show(fragmentB);
transaction.commit();

隐藏/显示Fragment的方法:hide()/show()

1:切换到另外一个Fragment时,使用hide()方法将当前Fragment隐藏
2:当该Fragment需要被重新显示出来的时候,使用show()方法完成
总结:隐藏当前的Fragment,设置为不可见,但是并不会销毁

 FragmentA  fragmentA= new FragmentA();
  transaction.add(R.id.main_frame_layout, fragmentA);
   transaction .hide(fragmentB);//hide():传入要隐藏的Fragment
   transaction.show(fragmentA);//show():传入要显示的Fragment

三、FragmentManager

1.简介

中文名称:碎片管理器
出生日期:Android 3.0/API level 11
助 理:FragmentTransaction
获取方式:①Android 3.0前的版本使用getSupportFragmentManager()方法获取
②Android 3.0之后的版本用getFragmentManager()获取

2.实现思路

1:获得FragmentManager对象
FragmentManager fragmentManager=getFragmentManager();
2:开启事务
FragmentTransaction transaction = fragmentManager.beginTransaction();
3:通过FragmentTransaction 调用add()、replace()方法管理fragment
4:transaction .commit();

Fragment的动态显示

HomeFragment类的代码

public class HomeFragment extends Fragment {//继承Fragment
    @Nullable
    @Override
    //重写onCreateView方法
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        final View view = inflater.inflate(R.layout.pic5, null);
        return view;
    }
}
                final HomeFragment homeFragment = new HomeFragment();
                //获得管理者
//                FragmentManager manager1 = getSupportFragmentManager();
                //获得事物管理者
//                 FragmentTransaction transaction = manager1.beginTransaction();
                //添加到回退栈
//                 transaction.addToBackStack("one");
                //替换
//                transaction.replace(R.id.frame,new HomeFragment());
                //提交事务
//                transaction.commit();
                getSupportFragmentManager().beginTransaction().addToBackStack("one").replace(R.id.frame,homeFragment).commit();//简写

Fragment的生命周期

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值