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

Posted

技术标签:

【中文标题】跨活动的片段之间的共享元素转换不一致【英文标题】:Shared element transition between fragments across activities not consistent 【发布时间】:2016-11-18 09:18:36 【问题描述】:

我有两个活动 A1 和 A2。 A1 有一个片段 F1,A2 有一个片段 F2。当用户点击片段 F1 时,它会调用默认加载片段 F2 的 Activity A2。这就是流量。现在我在片段 f1 和 f2 之间有了一个共享视图。我跟着this link 实现了共享元素转换,它可以工作,但只是有时。跨片段的共享元素转换不一致。返回转换按预期发生,但输入转换并不总是有效。

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

【问题讨论】:

【参考方案1】:

我可能对这个答案有误,但请随意尝试:

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

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

【讨论】:

以上是关于跨活动的片段之间的共享元素转换不一致的主要内容,如果未能解决你的问题,请参考以下文章

不同活动的片段之间的共享元素转换

不同活动的片段之间的共享元素转换

视图之间的共享元素转换(不是活动或片段)

共享元素片段转换不起作用

片段转换:共享元素

Android:无法使用 Google Maps Fragment 进行共享元素转换