我有一个Activity
应用程序,其中多个应用程序Fragments
正在使用导航组件进行切换。当我在两个片段之间切换时,它们的onCreate()
和onDestroy()
方法似乎重叠。因此,当片段访问相同的全局对象时,我很难为片段编写初始化和清理代码。
Framgent_A
从到导航Fragment_B
具有以下方法顺序:
Fragment_B.onCreate()
Fragment_A.onDestroy()
在Fragment_A.onDestroy()
我反转我在Fragment_A.onCreate()
. 在我希望事情被调用Fragment_B
时处于中立状态。onCreate()
然而,情况并非如此,因为Fragment_A.onDestroy()
尚未调用。
Android上的重叠是正常的还是我在导航组件中配置了错误?有没有另一种方法可以实现我想要做的事情?我知道我可以将两者结合Fragments
起来并使其工作,但我不希望任何一个 Fragment 彼此了解。对我来说,在创建时Framgnet_A
仍然活着,应该替换时似乎很奇怪。Fragment_B
Fragment_B
Fragment_A
任何帮助是极大的赞赏!
编辑:
在调试时浏览源代码后,我发现在FragmentNavigator.navigate()
FragmentTransaction.setReorderingAllowed()被调用,它允许重新排序操作,甚至允许在前onCreate()
一个片段之前调用新片段onDestroy()
。问题仍然存在,在下一个 Fragment 中初始化相同的全局状态之前,如何解决我在一个 Fragment 中正确清理全局状态的问题。