【问题标题】:Is current Fragment destroyed in every Replace transaction without addToBackStack?在没有 addToBackStack 的情况下,当前 Fragment 是否在每个 Replace 事务中被销毁?
【发布时间】:2018-09-02 13:38:52
【问题描述】:

Fragment A -> Fragment B(替换添加到后台堆栈的事务)

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

Fragment B -> Fragment C(替换未添加到后台堆栈的事务)

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

在事务中 Fragment B -> Fragment B 是否会被销毁,因为 backstack 会保持对之前事务的引用?

AFAIK,在没有 addToBackStack 的正常替换事务中,当前片段被销毁,但这里的 backstack 持有对先前事务中该片段的引用

【问题讨论】:

    标签: android android-fragments fragmenttransaction fragment-backstack


    【解决方案1】:

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

    您可以使用 .add() 方法代替 replace() 方法。这样片段当前片段将被添加到堆栈中,并且在您说替换或弹出之前不会被销毁。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-23
      • 1970-01-01
      • 2017-05-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-09
      相关资源
      最近更新 更多