使用 FragmentTransaction 的时候,它提供了这样两个方法,一个 add , 一个 replace ,对这两个方法的区别一直有点疑惑。我觉得使用 add 的话,在按返回键应该是回退到上一个 Fragment,而使用 replace 的话,那个别 replace 的就已经不存在了,所以就不会回退了。但事实不是这样子的。add 和 replace 影响的只是界面,而控制回退的,是事务。
Add a fragment to the activity state. This fragment may optionally also have its view (if Fragment.onCreateView returns non-null) into a container view of the activity.
add 是把一个fragment添加到一个容器 container 里。
Replace an existing fragment that was added to a container. This is essentially the same as calling remove(Fragment) for all currently added fragments that were added with the same containerViewId and then add(int, Fragment, String) with the same arguments given here.
replace 是先remove掉相同id的所有fragment,然后在add当前的这个fragment。
在大部分情况下,这两个的表现基本相同。因为,一般,咱们会使用一个FrameLayout来当容器,而每个Fragment被add 或者 replace 到这个FrameLayout的时候,都是显示在最上层的。所以你看到的界面都是一样的。但是,使用add的情况下,这个FrameLayout其实有2层,多层肯定要比一层的来得浪费,所以还是推荐使用replace。当然有时候还是需要使用add的。比如要实现轮播图的效果,每个轮播图都是一个独立的Fragment,而他的容器FrameLayout需要add多个Fragment,这样他就可以根据提供的逻辑进行轮播了。
而至于返回键的时候,这个跟事务有关,跟使用add还是replace没有任何关系。
相关推荐
使用 FragmentTransaction 的时候,它提供了这样两个方法,一个 add , 一个 replace ,对这两个方法的区别一直有点疑惑。 我觉得使用 add 的话,在按返回键应该是回退到上一个 Fragment,而使用 replace 的话,那个...
#前言 之前已经写过用Fragment做主界面以及Fragment与Activity通信的文章。...对于Fragment还剩FragmentTransaction没有具体讲到,此篇文章就讲一下FragmentTransaction的主要用法,也是对之前的回顾。
在同一个activity里根据按钮显示不同的fragment
源码查看查看add方法源码:public FragmentTransaction add(Fragment fragment, String tag) {事务的
显示:add() replace() show() attach() 隐藏:remove() hide() detach() 对于每一组方法,虽然最后产生的效果类似,但方法背后带来的副作用以及对Fragment的生命周期的影响都不尽相同。 add() vs. replace() 只有在...
FragmentTransaction addToBackStack 无效问题如果当前的类继承的ActionBarActivity,则FragmentManag
在CodeLab中,这是使用FragmentManager和FragmentTransaction在一个Activity中利用片段的UI灵活性的演示。 如第1部分中有关片段和在基于幻灯片和标签的现代视图中实现片段的示例所述。 在此CodeLab中,我们将讨论...
Android开发-FragmentTransaction-Fragment增加隐藏显示-完整Demo-AndroidStuidio http://blog.csdn.net/iwanghang
关于Fragment重叠问题分析和解决 详细见博客: http://blog.csdn.net/whitley_gong/article/details/51987911
1.知识点:FragmentCustomAnimation 2.示例:来自于官网示例的简化,这样更方便于学习该知识点。 3.项目FragmentCustomAnimationTest1效果:重复点按钮new fragment,第点一次,数字加一,实现原因是第点一次加了一个新...
Android Fragment完全解析,关于碎片你所需知道的一切
极致精简的fragment实现导航栏切换demo 注意:FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 不能讲fragmentTransaction 设为全局变量。否则会报commit has already execute!
Android Fragment(碎片)应用Demo(开发工具Android Studio),... FragmentTransaction transaction = fragmentManager. beginTransaction(); transaction.replace(R.id.right_layout, fragment); transaction.commit();
片段事务生成器这个库以一种优雅的方式围绕着 FragmentTransactions。先决条件本项目使用 android support-v4:20.+ 该项目目前使用 API 20 和 buildToolsVersion 20.0.0 编译,希望将来有一种使用项目级别的方法。...
这些代码可以思科认证,有效对你的发展,也可以对你的考试认证有帮助,里面包含更有不一样的代码,有思科的考场的,种类繁多,希望对你有帮助,
利用FragmentTransaction来管理Fragment,实现Fragment的显示和隐藏
利用fragmentTransaction的show和hide实现fragment+radioButton 切换的简单示例
TabHost,TabContentFactory,IOnTabChangeListener,FragmentActivity,FragmentManager,SupportFragmentManager,FragmentTransaction
* 在用FragmentTransaction.commit()方法提交FragmentTransaction对象后 * 会在进程的主线程中,用异步的方式来执行。 * 如果想要立即执行这个等待中的操作,就要调用这个方法(只能在主线程中调用)。 ...