android - 跨 Activity 的 fragment 之间的共享元素转换不一致

标签 android android-fragments android-5.0-lollipop shared-element-transition

我有两个 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 上的 onStartonResume 执行,而不是从onCreateView 如您所料。所以你的 setSharedElementEnterTransition() 没有被执行。

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

关于android - 跨 Activity 的 fragment 之间的共享元素转换不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38391433/

相关文章:

Android:如何检查矩形是否包含触摸点?

java - 无法从 fragment 对象访问公共(public)方法

java - 当在 tablayout 中调用其他 fragment 时,第一个 fragment 会出现一秒钟

Android:点击按钮时刷新/更新另一个 Activity 的 fragment

android - Eclipse 中未生成 MainActivity 类?

Android 5.0 上的 Android 4.4 半透明状态和导航栏样式

Android parcelable 和 Intent : redBundle: bad magic number

java - jdk 安装时构建 Gradle 错误?

java - 无法设置我的 EditText 的背景

android - Lollipop 工具栏抽屉切换不可点击