FragmentManager和FragmentTransaction到底做了什么?

时间:2015-04-21 20:46:43

标签: android fragmenttransaction fragmentmanager fragment-backstack

我在下面有简单的代码

FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.fragment_container, mFeedFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();

这些代码行做了什么?

2 个答案:

答案 0 :(得分:58)

getFragmentManager()
  

返回FragmentManager以与相关的片段进行交互   通过这项活动。

FragmentManager,用于创建添加,删除或替换片段的事务。

fragmentManager.beginTransaction();
  

对与之关联的Fragments启动一系列编辑操作   这个FragmentManager。

将使用的FragmentTransaction对象。

fragmentTransaction.replace(R.id.fragment_container, mFeedFragment);

使用ID为mFeedFragment

的布局上的R.id.fragment_container替换当前片段
fragmentTransaction.addToBackStack(null);
  

将此事务添加到后台堆栈。这意味着   交易将在提交后被记住,并将被撤销   以后弹出堆栈时的操作。

对返回按钮的使用很有用,因此可以回滚事务。 参数名称:

  

是此后备堆栈状态的可选名称,或者为null。

有关其他问题What is the meaning of addToBackStack with null parameter?

的信息,请参阅参考资料

Last语句提交事务并执行所有命令。

请参阅Google文档以获取更多帮助:

http://developer.android.com/reference/android/support/v4/app/FragmentActivity.html http://developer.android.com/reference/android/app/FragmentManager.html http://developer.android.com/reference/android/app/FragmentTransaction.html

答案 1 :(得分:21)

Android FragmentManager

FragmentManager在Android中管理Fragments,特别是它处理片段之间的事务。事务是一种添加,替换或删除片段的方法。

Android FragmentTransaction

如上所述,FragmentTransaction为我们提供了在Android中添加,替换或删除片段的方法。它为我们提供了与片段交互的界面。


  

fragmentTransaction.replace(R.id.fragment_container, mFeedFragment);

方法replace(int containerViewId, Fragment fragment)替换容器Fragment中的现有containerViewId对象,并添加Fragment fragment

  

fragmentTransaction.addToBackStack(null);

此方法addToBackOfStack(String name)将此事务添加到后台堆栈,这可以用来记住FragmentsActivity

可以再次使用
  

fragmentTransaction.commit();

方法commit()安排此事务,这不是即时的;它在主线程上安排在线程就绪时完成。

Reference