Fragment面试题

什么是Fragment:

Fragment称为碎片,必须依附于Activity存在,有自己的生命周期,可以动态的添加删除,为大屏幕提供灵活的UI设计支持。

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

使用广泛,有自己的生命周期,比Activity更节省内存;

生命周期

onAttach()
onCreate()
onCreateView()
onActivityCreated()
onStart()
onResume()
onPause()
onStop()
onDestoryView()
onDestory()
onDetach()

// replace,FragmentA替换为FragmentB,在创建完B以后会先销毁A,再创建B的视图
FragmentB: onAttach
FragmentB: onCreate
——————————————————————————
FragmentA: onPause
FragmentA: onStop
FragmentA: onDestroyView
FragmentA: onDestroy
FragmentA: onDetach
——————————————————————————
FragmentB: onCreateView
FragmentB: onActivityCreated
FragmentB: onStart
FragmentB: onResume

// add,添加FragmentA
FragmentA: onAttach
FragmentA: onCreate
FragmentA: onCreateView
FragmentA: onActivityCreated
FragmentA: onStart
FragmentA: onResume

//remove,移除FragmentA
FragmentA: onPause
FragmentA: onStop
FragmentA: onDestroyView
FragmentA: onDestroy
FragmentA: onDetach

//attach,从detach到attach状态
FragmentA: onCreateView
FragmentA: onActivityCreated
FragmentA: onStart
FragmentA: onResume

//detach,从attach到detach状态
FragmentA: onPause
FragmentA: onStop
FragmentA: onDestroyView

hide和show不会触发生命周期回调

Fragment与Activity之间是如何传值的
一、Activity给fragment传值

1、setArguments(),传入Bundle对象,使用getArguments()获取
2、getFragmentManager.fingFragmentByTag()或findFragmentById获得fragment。在addFragment和replace是可将Tag传入,id为xml布局中占位控件FrameLyout的id。

二、Fragment向Activity传值:

1、通过回调的方式设置,activity实现接口
2、通过getActivity获取到activity。防止activity为空的情况可以在onAttach(Activity context)方法中保存一份Activity的实例,此方法已被标记过时,用onAttach(Context context)代替。

三、Fragment与Frament之间传值:

1、通过接口回调;
2、通过Activity获取到getSupportFragmentManager进而获取到fragment。

FragmentTransaction的add和replace的区别:

1、add将一个fragment添加到activity中,
2、replace将顶层的fragment替换掉

Fragment如何实现类似Activity的压栈和出栈效果的

addToBackStack(null)
FragmentManagerImpl中有一个用于存储BackStackRecord的ArrayList,来管理事务;

FragmentPagerAdapter与FragmentStatePagerAdapter的区别:

FragmentPageAdapter,在Fragment切换的时候之前的Fragment不会销毁,适用于Fragment较少的情况;
FragmentStatePageAdapter,在Fragment切换后会将前面的Fragment销毁,适用于Fragment较多的情况。

参考:Android面试(二):Fragment面试你所需知道的一切

在面试中,可能会涉及到关于Fragment的一些常见问题,以下是一些可能会被问到的问题及其答案: 1. 什么是FragmentFragment是Android中的一种可重用的组件,它可以与Activity进行交互,作为Activity界面的一部分进行展示。它可以有自己的布局和生命周期,并且可以被添加、移除、替换或者在Activity中进行切换。 2. Fragment的生命周期是什么样的? Fragment的生命周期包括以下几个方法:onAttach、onCreate、onCreateView、onActivityCreated、onStart、onResume、onPause、onStop、onDestroyView、onDestroy和onDetach。这些方法提供了在Fragment生命周期中不同阶段执行代码的机会,开发者可以在这些方法中处理相关的逻辑。 3. Fragment和Activity之间的通信方式有哪些? Fragment和Activity之间可以通过接口回调、广播、观察者模式等方式进行通信。其中,接口回调是最常见的方式,Activity可以实现一个接口,Fragment通过该接口将数据传递给Activity。广播和观察者模式可以用于更复杂的场景,可以实现多个Fragment和Activity之间的通信。 4. FragmentPagerAdapter和FragmentStatePagerAdapter有什么区别? FragmentPagerAdapter和FragmentStatePagerAdapter都是ViewPager的适配器,用于管理Fragment的切换。区别在于FragmentPagerAdapter会保留Fragment的状态,而FragmentStatePagerAdapter会销毁之前的Fragment,适用于有大量Fragment的情况。 5. getFragmentManager、getSupportFragmentManager和getChildFragmentManager有什么区别? getFragmentManager是用于获取与当前Fragment关联的FragmentManager,通常用于在Fragment中获取父级Activity的FragmentManager。getSupportFragmentManager是Support库中的方法,用于获取兼容版本的FragmentManager,通常用于在Support库中使用Fragment。getChildFragmentManager是用于获取Fragment中嵌套的子级FragmentManager,通常用于在一个Fragment中管理另一个Fragment。 以上是一些关于Fragment的常见面试题及其答案。希望对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值