欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android面向面试:Fragment内容复习

程序员文章站 2022-03-27 21:35:12
Fragment复习 组件">1. Fragment为什么被称为第五大组件 Fragment为什么被称为第五大组件 使用频率高,有自己的生命周期,同时可以灵活的加载到Acti...

Fragment复习

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

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

Fragment的加载

静态加载

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

动态加载

// 获取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();

FragmentPagerAdapter和FragmentStatePagerAdapter的区别

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

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

2. Fragment的生命周期

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

Android面向面试:Fragment内容复习

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

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

3. Fragment之间的通信

和Activity通信:

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

在Activity中调用Fragment中的方法

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

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添加到回退栈中