FragmentManager和FragmentTransaction到底做了什么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FragmentManager和FragmentTransaction到底做了什么?相关的知识,希望对你有一定的参考价值。

我在下面有简单的代码

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

这些代码行做了什么?

答案
getFragmentManager()

返回FragmentManager以与与此活动关联的片段进行交互。

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

fragmentManager.beginTransaction();

在与此FragmentManager关联的Fragments上启动一系列编辑操作。

将使用的FragmentTransaction对象。

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

用布局上的mFeedFragment替换当前片段,其id为: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

另一答案

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),将此事务添加到后栈,这可以用来记住Fragments并且可以被Activity再次使用

fragmentTransaction.commit();

方法commit()安排这个交易,这不是瞬时的;它在主线程上安排在线程准备好时完成。

Reference

以上是关于FragmentManager和FragmentTransaction到底做了什么?的主要内容,如果未能解决你的问题,请参考以下文章

FragmentManager和FragmentTransaction到底做了什么?

在 DialogFragment 中使用 FragmentManager 和 FragmentTransaction

如何实现 FragmentManager 和 FragmentTransaction 来替换单个片段?

AsyncTask 和 FragmentManager 的问题

Android FragmentManager 和 Fragment Result API

FragmentManager 上的 IllegalStateException