在没有addToBackStack的情况下,每一个Replace事务中的当前Fragment是否都会销毁?

时间:2018-09-02 13:38:53

标签: android android-fragments fragmenttransaction fragment-backstack

片段A->片段B(替换事务已添加到后堆栈)

getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.container, fragementB).addToBackStack("tag").commit();

片段B->片段C(替换事务未添加到后堆栈)

getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.container, fragementC).commit();

在事务Fragment B中-> Fragment C是否会被销毁,因为Backstack一直在引用先前事务中的引用?

AFAIK,在没有addToBackStack的正常替换事务中,当前片段已被破坏,但此处的backstack保留了先前事务中对该片段的引用

1 个答案:

答案 0 :(得分:0)

我认为是。当您使用replace方法时,当前片段实例将被销毁。当调用相同的片段时,您可以看到onCreateView()和onViewCreated()再次被调用。

您可以使用.add()方法代替replace()方法。这样,直到您说出“替换”或“弹出”为止,片段的当前片段将被添加到堆栈中并且不会被破坏。