addToBackStack(null)方法跟随commit()的调用是什么意思?引用文档如下:
通过调用addToBackStack(),替换事务将保存到后退堆栈中,以便用户可以通过按“返回”按钮撤消事务并通过带回前一个片段。
如果您向事务添加多个更改(例如另一个add()或remove())并调用addToBackStack(),则在调用commit()之前应用的所有更改都作为单个事务添加到后退堆栈中,并且Back按钮将一起反转它们。
除了以下情况,将更改添加到FragmentTransaction的顺序无关紧要:
必须最后调用commit()。如果您正在将多个片段添加到同一个容器中,则将它们添加的顺序确定它们在视图层次结构中出现的顺序。
所以你必须在最后提交。
为什么需要传递null参数给addToBackStack?
它不需要为null,它可以是一个字符串。如果不想,只需传递null。
public abstract FragmentTransaction addToBackStack(String name)
API级别11中新增
将此事务添加到后退堆栈中。这意味着该事务将在提交后记住其操作,并在稍后从堆栈弹出时反转其操作。
参量名-此后退堆栈状态的可选名称,或null。
似乎这段代码是无用的,因为我没有最后一行.addToBackStack(null).commit()运行代码而没有任何问题
如果要导航到以前的片段,请将其添加到后退堆栈中。因此,这取决于您是否想将片段添加到后退堆栈。
如何在添加了片段之后获取该片段?
您已经拥有了碎片实例firstFragment
,所以我不知道您说的“稍后获取片段”的意思。
更多信息请参见:
http://developer.android.com/guide/components/fragments.html
http://developer.android.com/reference/android/app/FragmentTransaction.html#addToBackStack(java.lang.String)