我在另一个片段 A 之上添加一个片段 B,如下所示:
fragmentManager.beginTransaction().add(R.id.frame_container, fragment).addToBackStack("post_details").commit();
问题是,当我在 B 上单击设备时,我需要 A 中的锚点。在这种情况下将调用哪个生命周期方法?
我在另一个片段 A 之上添加一个片段 B,如下所示:
fragmentManager.beginTransaction().add(R.id.frame_container, fragment).addToBackStack("post_details").commit();
问题是,当我在 B 上单击设备时,我需要 A 中的锚点。在这种情况下将调用哪个生命周期方法?
这取决于您使用的事务类型以及您是否将片段添加到后台堆栈。假设您将 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 它正在被删除。