我正在寻找答案,但找不到以下内容。
getFragmentManager().beginTransaction().add()
的新片段(B),片段B可见所以我的问题是,当片段B被分离时,片段A中的哪个方法将被调用,我正在调试片段A中的所有onResume,onAttach,但看起来它没有被调用。
有一点,如果我们使用替换片段而不是添加片段,它将使用片段生命周期运行提取,但是使用"添加"方法,看起来像片段A仍然在屏幕上可见,所以无论如何检测片段A何时不被片段B覆盖?
有什么想法吗?
答案 0 :(得分:4)
当用户将一个活动导航到片段时,然后在名为
的生命周期之下FirstFragment:onAttach
FirstFragment:onCreate
FirstFragment:onCreateView
FirstFragment:onViewCreated
FirstFragment:onActivityCreated
FirstFragment:onStart
FirstFragment:onResume
当用户将firstfragment导航到第二个片段时,如果是 addtobackstack和add()然后在生命周期下面调用 SecondFragment:onAttach
SecondFragment:onCreate
SecondFragment:onCreateView
SecondFragment:onViewCreated
SecondFragment:onActivityCreated
SecondFragment:onStart
SecondFragment:onResume
当用户在addtobackstack()和add()的情况下按下然后在生命周期下面调用 SecondFragment:onPause
SecondFragment:onStop
SecondFragment:onDestroyView
SecondFragment:onDestroy
SecondFragment:onDetach
当用户在addtobackstack和replace()的情况下将firstfragment导航到第二个片段然后在生命周期的下面调用 SecondFragment:onAttach
SecondFragment:onAttachonAttach
SecondFragment:onCreate
FirstFragment:onPause
FirstFragment:onStop
FirstFragment:onDestroyView
SecondFragment:onCreateView
SecondFragment:onViewCreated
SecondFragment:onActivityCreated
SecondFragment:onStart
SecondFragment:onResume
当用户在addtobackstack()的情况下按下并在生命周期下面替换时调用 SecondFragment:onPause
SecondFragment:onStop
SecondFragment:onDestroyView
SecondFragment:onDestroy
SecondFragment:onDetach
FirstFragment:onCreateView
FirstFragment:onViewCreated
FirstFragment:onActivityCreated
FirstFragment:onStart
FirstFragment:onResume
答案 1 :(得分:0)
最后,我找到了处理“添加片段”的方法(请注意,当我们使用添加片段时,片段生命周期不像“替换片段”那样运行。)
在Activity中,只需实现FragmentManager.OnBackStackChangedListener来处理后备堆栈的更改,然后获取后端堆栈的顶部片段以执行您想要的操作。