我有一个只有一个Activity
的应用程序,其中有多个Fragments
通过导航组件进行切换。当我在两个fragment之间切换时,它们的onCreate()
和onDestroy()
方法似乎会重叠。因此,当它们访问同一全局对象时,我很难为这些fragment编写初始化和清理代码。
从Fragment_A
导航到Fragment_B
具有以下方法顺序:
Fragment_B.onCreate()
Fragment_A.onDestroy()
在Fragment_A.onDestroy()
中,我撤消了我在Fragment_A.onCreate()
中所做的操作。当调用onCreate()
时,我期望Fragment_B
中的状态处于中立状态。但由于Fragment_A.onDestroy()
尚未被调用,情况并非如此。
Android上是否正常重叠或者我在导航组件中配置错了?还有其他方法可以实现我想要做的事情吗?我知道我可以将两个Fragments
耦合起来使其工作,但我不希望两个 Fragment 相互了解。对我来说,Fragment_B
创建时Fragment_A
仍然存在似乎很奇怪,因为Fragment_B
应该替换Fragment_A
。
任何帮助都将不胜感激!
编辑:
在调试过程中查看源代码后,我发现在FragmentNavigator.navigate()
中调用FragmentTransaction.setReorderingAllowed()允许重新排序操作,甚至允许在上一个片段的onDestroy()
被调用之前调用新片段的onCreate()
。问题仍然存在,如何解决在正确初始化下一个 Fragment 的全局状态之前正确清理上一个 Fragment 中的全局状态的问题。