-1

我在另一个片段 A 之上添加一个片段 B,如下所示:

fragmentManager.beginTransaction().add(R.id.frame_container, fragment).addToBackStack("post_details").commit();

问题是,当我在 B 上单击设备时,我需要 A 中的锚点。在这种情况下将调用哪个生命周期方法?

4

1 回答 1

3

这取决于您使用的事务类型以及您是否将片段添加到后台堆栈。假设您将 B 添加到 backstack 并且您的 Activity 没有经历任何生命周期事件,让我们来看看场景:

  • 添加 A -> 添加 B + addToBackstack -> popBackStack

    在这种情况下,A 将不会经历任何生命周期事件。

  • 添加 A -> 替换为 B + addToBackStack -> popBackStack

    在这种情况下,A 会经过 onCreateView->onActivityCreated 等等。

现在关于您的另一个问题,A如何知道B是否被删除?有很多方法,但一个简单的方法是让 B 在它自己的 onPause 中检查 Fragment.isRemoving。然后,B 可以通知托管 Activity 甚至 Fragment A 它正在被删除。

于 2015-09-04T21:21:57.980 回答