FragmentManager和FragmentTransaction到底做了什么?

问题描述 投票:46回答:2

我在下面有简单的代码

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

这些代码行做了什么?

android fragmenttransaction fragmentmanager fragment-backstack
2个回答
60
投票
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


23
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.