2016-10-19 112 views
0

我正在学习片段我有一些疑惑。请考虑下面的代码:片段生命周期

FragmentManager fm = getFragmentManager(); 
Fragment MyFragment = new Fragment(); 
fm.beginTransaction().replace(R.id.my_container, MyFragment).addToBackStack(null).commit(); 

我的问题是:

  1. 究竟是什么取代呢?
  2. 如果我以这种方式创建多个片段(替换容器中的以前的片段),会发生什么情况。
  3. 它可以以任何方式损坏内存使用?
  4. 只是改变片段的内容好得多吗?
+0

对于第一个问题:http://stackoverflow.com/questions/18634207/difference-between-add-replace-and-addtobackstack –

+0

它并不能真正帮助。我找到了关于它的基本信息,但我正在考虑细节。像更换碎片所发生的一样,保持它们的记忆很重要等等。 – TomekK

回答

0
  1. 替换删除容器中的所有片段,并将新片段添加到容器。 (如果容器中没有片段,那么它只是添加新的片段)。
  2. 如果您以这种方式创建多个片段,则每笔交易都会保存到堆栈中,以便您可以通过按下后退按钮来撤销交易。
  3. 你唯一能做的就是创建一个变量fragmentTransaction并且只使用fm.beginTransaction()一次,而不是每次你想要替换容器中的片段。
  4. 我不这么认为,碎片应该是模块化和可重用的。

你可以在这里阅读更多:集装箱 https://developer.android.com/guide/components/fragments.html

0
  1. 简单换个 “层”。
  2. appcrash
  3. 不,片段是最简单的方法。

使用片段&堆栈中的标签引用的片段,如果你想再次调用片段和处理Back按钮。

fm.beginTransaction().replace(R.id.my_container, MyFragment, "FRAGMENT_TAG").addToBackStack("FRAGMENT_BACKSTACK_TAG").commit();