【问题标题】:Passing data between Fragments and saving state on Screen Orientation Change在片段之间传递数据并在屏幕方向更改时保存状态
【发布时间】:2014-04-06 22:46:27
【问题描述】:

在开始之前,我已经阅读了thisthis 以及更多在线文章。我仍然无法找到正确的方法。

所以我的应用中只有 一个活动,以及 6 个片段。第一个是ListFragment,它从 SQLite 表中加载列表。当用户点击此列表中的一行时,我会做两件事:

1) 通过侦听器从该行获取 int,并将其传递回父 Activity,父 Activity 使用简单的 setter 方法将其存储为类变量。
2) 用另一个简单的Fragment 替换这个ListFragment。这个新的 Fragment 在该类变量上使用一个简单的 getter() 从不同的表中检索一些信息,并向用户显示所有详细信息。

到目前为止一切顺利。现在,如果我在此详细信息片段上,并且我更改了屏幕方向,则不会重新加载活动状态(因为我正在检查 onCreate() 中的 savedInstanceState 是否为 null),但是,类变量失去了它们的价值,我的应用程序崩溃了。

基本上我正在尝试将数据从 ListFragment 传递到 details Fragment。我正在通过导致问题的活动来完成它。根据 Android 文档:

所有 Fragment 到 Fragment 的通信都是通过关联的 活动。两个 Fragment 永远不应该直接通信。

没有给我带来麻烦的特定代码,所以没有发布任何代码。

【问题讨论】:

    标签: android fragment communication state screen-orientation


    【解决方案1】:

    onSaveInstanceStateonRestoreInstanceState 仅用于保存和恢复活动的每个实例状态,以防您的活动被操作系统破坏(例如,释放内存或在设备运行时重新创建它方向改变了)。因此,您可以将变量保存在 onSaveInstanceState 中,然后使用 onRestoreInstanceState 取回它们。

    对于您的下一个问题,我认为article 会对您有所帮助。也由 Gene 回答这个question 会帮助你。

    【讨论】:

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