我有两个 Activity A1 和 A2。 A1 有 fragment F1,A2 有 fragment F2。当用户点击 Fragment F1 时,它会调用默认加载 Fragment F2 的 Activity A2。这就是流程。现在我在 fragment f1 和 f2 之间有一个共享 View 。我关注了this link实现共享元素转换并且它有效,但只是有时。跨 fragment 的共享元素转换不一致。返回转换按预期发生,但进入转换并不总是有效。
我哪里错了?我应该在哪里设置 setSharedElementEnterTransition()
和 setSharedElementReturnTransition()
?
最佳答案
这个答案可能有误,但请随意尝试:
我的假设是您在 onCreateView
方法上设置了 setSharedElementEnterTransition()
和 setSharedElementReturnTransition()
这在某些情况下是可以的,但如果您遵循完整的 Activity 生命周期 (you can check it here)您会注意到,在某些情况下,例如:在您 A1 暂停或停止之后,您的 Fragment1 代码将从 fragment 上的 onStart
或 onResume
执行,而不是从onCreateView
如您所料。所以你的 setSharedElementEnterTransition()
没有被执行。
出于这个原因,我认为返回转换始终有效,因为它在调用 onStop 方法时被调用。这里的问题是,这种情况下的 shareElement 转换有些复杂,因为您混合了 4 个 Activity 生命周期。我必须对此做一些研究,但我认为这可能是原因。希望对您有所帮助。
关于android - 跨 Activity 的 fragment 之间的共享元素转换不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38391433/