【问题标题】:Can one Fragment instance traverse between two Activities?一个Fragment实例可以在两个Activity之间遍历吗?
【发布时间】:2016-01-21 16:12:39
【问题描述】:

我一直在分析 Android 中 Activity 和 Fragment 的生命周期,并提出了一个问题 - 一个 Fragment 实例是否可以在创建并显示后自动放入新的 Activity 中?

例如,是否存在会导致 Activity 重新创建但随后会将 Fragments 从旧 Activity“迁移”到新 Activity 的配置更改场景?

问题的原因是将 Activity 作为其 Fragments 的侦听器传递的想法。我想知道是否存在此侦听器丢失的情况(除了 onSaveInstanceState 序列化)。

编辑:

为了明确我的想法 - 重用 Fragment 实例是一种不受欢迎的行为。我想确保它不会在默认情况下发生。

【问题讨论】:

  • 为了让我的想法清楚 - 重用 Fragment 实例是一种不受欢迎的行为。我想确保它不会在默认情况下发生。
  • 那么没有。除非您或其他开发人员做了一些奇怪的事情来防止这种情况发生,否则片段将始终保留在 Activity 范围内。

标签: android android-fragments android-lifecycle


【解决方案1】:

官方 Android API 中没有任何内容允许这样做。有Fragment#setRetainState 方法允许Fragments 在轮换更改期间比其父Activity 寿命更长,但它会重新附加到创建它的Activity。片段基本上由作为活动一部分的FragmentManager 控制。如果Activity 消失,那么它的FragmentManager 也会消失。

现在,您可以在 Activity 的生命周期之外保留对 Fragment 的引用。例如,在应用程序或 Fragment 类本身的某处保留 Fragment 的静态引用,但这会引起很多麻烦。它超出了他们的用例,最好不要考虑。

我认为唯一真正的解决方案是将 Fragment 状态保留在包含 Fragment 可以理解的各种参数的 Bundle 中。您可以将此捆绑包从一个活动传递到另一个活动,并且片段可以根据捆绑包状态重新构建自己。这听起来也很麻烦,但可以做到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    相关资源
    最近更新 更多