当用户按下后添加片段方法(不替换片段)时将调用哪种方法

时间:2016-09-14 10:22:11

标签: android android-fragments

我正在寻找答案,但找不到以下内容。

  • 我默认加载了Fragment A.
  • 现在我添加了getFragmentManager().beginTransaction().add()的新片段(B),片段B可见
  • 用户按下后,FragmentManager将弹出片段B,片段A再次可见

所以我的问题是,当片段B被分离时,片段A中的哪个方法将被调用,我正在调试片段A中的所有onResume,onAttach,但看起来它没有被调用。

有一点,如果我们使用替换片段而不是添加片段,它将使用片段生命周期运行提取,但是使用"添加"方法,看起来像片段A仍然在屏幕上可见,所以无论如何检测片段A何时不被片段B覆盖?

有什么想法吗?

2 个答案:

答案 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来处理后备堆栈的更改,然后获取后端堆栈的顶部片段以执行您想要的操作。