Android面向面试复习----Fragment复习

Fragment复习

1. Fragment为什么被称为第五大组件

  1. Fragment为什么被称为第五大组件

    使用频率高,有自己的生命周期,同时可以灵活的加载到Activity中去。它是依赖于Activity的,不能单独存在。

  2. Fragment的加载

    1. 静态加载

      在xml布局中使用fragment标签加载进来,name指定对应的Fragment即可。

    2. 动态加载

      // 获取Fragment管理器
      FragmentManager fm = getFragmentManager();
      //开启事务
      FragmentTransaction transaction = fm.beginTransaction();
      DemoFragment mDemoFragment = new DemoFragment();
      //将Fragment加载到Activity中
      transaction.replace(R.id.content_layout, mDemoFragment);
      //将该Fragment添加到回退栈中
      transaction.addToBackStack("demoFragment");
      //提交
      transaction.commit();
      
  3. FragmentPagerAdapter和FragmentStatePagerAdapter的区别

    Fragment和ViewPager结合使用的时候,可能会用到FragmentPagerAdapter和FragmentStatePagerAdapter

    • FragmentPagerAdapter适用于页面较少的情况;FragmentStatePagerAdapter适用于页面较多的情况,因为它在切换页面时,进行了内存回收。
    • 区别在于destroyItem方法,FragmentPagerAdapter中只是将视图解绑mCurTransaction.detach((Fragment)object);,并未从Adapter中移除。FragmentStatePagerAdapter中进行了remove操作mCurTransaction.remove(fragment);,可以被垃圾回收器直接回收。

2. Fragment的生命周期

Activity和Fragment的生命周期之前的关系

这里写图片描述

解释一下,比Activity多出来的几个生命周期方法:

  • onAttach():和Activity关联时调用
  • onCreateView():创建Fragment视图
  • onActivityCreated():当Activity调用了onCreate时调用
  • onDestoryView:Fragment视图被移除时调用
  • onDetach:Fragment和Activity取消关联时调用。

3. Fragment之间的通信

  1. 和Activity通信:

    在Fragment中通过getActivity()就可以操作Activity中相关的方法。

  2. 在Activity中调用Fragment中的方法

    在Fragment中创建一个接口,让Activity实现该接口,进行接口回调执行。

  3. Fragment和Fragment之间通信

    在Fragment中获取Activity,然后通过Activity通过findFragmentById()获取另一个Fragment,即可进行通信。

4. Fragment管理器:FragmentManager

FragmentManager一般是用来操作Fragment的,但是直接操作Fragment的是FragmentTransaction而不是它自己。

FragmentTransaction的常用Api:

  • replace:替换Fragment实例,是remove和add的结合
  • add:将Fregment添加到对应的id布局中
  • remove:将Fragment从Activity中移除
  • addToBackStack:将Fragment添加到回退栈中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值