Android 面试题之Fragment相关

2018-01-14  本文已影响0人  侯蛋蛋_

Fragment的replace和add方法的区别

回答提示

在项目中进行Fragment切换的时候,可以用replaced()方法来切换,也可以用add()。

区别

add是吧一个Fragment添加到一个容器Container中

replace是先remove相同id的所有Fragment,然后在add当前这个Fragment

需要注意

使用replace()切换的话,Fragment都会重新实例化,重新加载数据,如何每次加载的数据都是从网络中获取的,这样就会带来性能的问题。

官方说明:replace()方法,只是在上一个Fragment不在使用时才调用。如果上一个Fragment还需要使用的话,应该使用add()方法切换。

Activity和Fragment生命周期有哪些?

Activity:

onCreate->onStart->onResume->onPause->onStop->onDestroy。

Fragment:

onAttach->onCreate->onCreateView->onActivityCreated>onStart->onResume->onPause->onStop->onDestroyView

Fragment 跟 Activity 之间是如何传值的?

面试经验:

这个问题真实场景经常见,面试官就想看看大家是否有过真实开发经验,大家先说说如何传值,先让面试官感觉大家有经验确实干过,然后在介绍下在真实开发的场景哪里用过,然后也介绍下一般使用EventBus或者RxBus这样让人感觉满满的干货,谈工资也比较好谈,目前开发中用一个activity加载几个fragment是非常常见的,例如:订单中心,主页面架构等等。不可避免的就需要用到activity与fragment之间进行某些值的传递,那么两者之间是如何值传递的呢?

答案解析

当 Fragment 跟 Activity 绑定之后,在 Fragment 中可以直接通过 getActivity()方法获取到其绑定的 Activity 对象,这样就可以调用 Activity 的方法了。在 Activity 中可以通过如下方法获取到 Fragment 实例

FragmentManager fragmentManager=getFragmentManager();
Fragment fragment=fragmentManager.findFragmentByTag(tag);
Fragment fragment=fragmentManager.findFragmentById(id);

获取到 Fragment 之后就可以调用 Fragment 的方法。也就实现了通信功能。

另外也可以调用 fragment.setArguments(Bundle)方法,将数据绑定到 Fragment 域中。
更多资料参考:Activity和Fragment之间的数据通信

描述一下 Fragment 的生命周期

描述一下 Fragment 的生命周期

面试官问这个问题就想看看大家对Fragment是否熟悉,毕竟Fragment用户体验很好,开发经常用,问这个问题还算正常。

日常开发中,fragment的使用是必不可少的,所以它也是基础面试中几乎必问的问题之一。fragment的生命周期和activity类似,有多出来几个生命周期,我们只需要对这几个多出来的生命周期掌握了就可以了,其他的都差不多。


ViewPager和Fragment使用过程中会遇到哪些问题

回答提示:

1. 适配器的选择

使用ViewPager加载多个Fragment时,我一般选择FragmentPagerAdapter。

需要大家注意:

2. Fragment数据的缓存

3. ViewPager预加载

4. Fragment嵌套Fragment

上一篇 下一篇

猜你喜欢

热点阅读