跨活动片段之间的共享元素转换不一致



我有两个活动A1和A2。A1 有一个片段 F1,A2 有一个片段 F2。当用户单击片段 F1 时,它会调用默认情况下加载片段 F2 的活动 A2。这就是流程。现在我在片段 f1 和 f2 之间有一个共享视图。我点击了此链接来实现共享元素转换,它有效,但只是有时。片段之间的共享元素转换不一致。返回转换按预期发生,但输入转换并不总是有效。

我哪里出错了?我应该在哪里设置setSharedElementEnterTransition()setSharedElementReturnTransition()

这个答案可能是错误的,但请随时尝试:

我的假设是,您正在onCreateView方法上设置setSharedElementEnterTransition()setSharedElementReturnTransition(),这在某些情况下是可以的,但是如果您遵循完整的活动生命周期(您可以在此处查看),您会注意到在某些情况下,例如:在您 A1 暂停或停止后,您的 Fragment1 代码将从片段上的onStartonResume执行,而不是从onCreateView执行你可能期望。因此,您的setSharedElementEnterTransition()不会被执行。

出于这个原因,我认为返回转换始终有效,因为在调用 onStop 方法时调用。这里的问题是,在这种情况下,shareElement 转换有些复杂,因为您混合了 4 个活动生命周期。我必须对此做一些研究,但我认为这可能是原因。希望对您有所帮助。

最新更新