1、在面试的时候,我一开始写的是FragmentTransaction的add()、hide()、show()、解决Fragment直接切换时的闪动问题,这个问题我一开始想的比较简单,首先我先讲一下这几个方法的作用吧。
add():向Activity加入一个片段,这个片段在activity容器中有他自己的视图。
hide():隐藏已经存在的Fragment,但是仅仅对已经添加到父容器中的Fragment有关,隐藏Fragment的View
show():显示一个以前被隐藏的Fragment,这仅仅对已经添加到activity中的Fragment有关,显示Fragment的View
detach():Fragment的视图被销毁,但是它的状态没有被销毁,还是被fragment manager
管理。
attach():Fragment的view重新加载到UI视图中,并显示,也就是执行onCreateView()→onActivityCreate()→onStart()→onResume()
replace():就相当于执行remove(Fragment)→
add(int, Fragment, String)这两个方法
2、通过介绍上面的几个方法,我们应该已经明白了各个方法的用途,之所以使用add(),hide(),replace()这几个方法不会出现闪动的问题,主要是因为hide()方法仅仅是隐藏了Fragment的View,而没有销毁View,show()方法仅仅是显示之前隐藏的View。
3、replace()是先remove(Fragment),然后add(Fragment),这样会导致fragment的重新创建。
4、detach()是将Fragment的视图销毁,Fragment的状态没有被销毁,还是被FragmentMenager管理。
通过上面的比较,大家应该明白了这几个方法之间的区别了吧,这样会使我们更加的灵活的掌握Fragment