【问题标题】:onSaveInstanceState() in activity and fragments?onSaveInstanceState() 在活动和片段中?
【发布时间】:2012-07-31 09:24:14
【问题描述】:

我有一个包含 2 个片段的活动。我想保存活动和片段的某些状态,以便在活动或片段被破坏时恢复。

所以我在片段和活动中都使用了 onSaveInstanceState,并获取传递给 onCreate 或 onCreateView 的包的数据。

此外,当活动被破坏时,这也很有效。然后在恢复它自己的数据,但是,因为在 onCreate() 我再次实例化适配器和片段,它们没有状态。

我该如何解决这个问题?

提前致谢。

【问题讨论】:

    标签: android


    【解决方案1】:

    最可能的原因是,根据Fragment 生命周期文档,FragmentonCreateView()ActivityonResume() 之前运行:

    http://developer.android.com/guide/components/fragments.html#Creating

    【讨论】:

    • 嗯,是的,这就是我已经注意到调试它的原因(这是有道理的,因为恢复实例状态不会等待我的 web 服务......)。但是解决这个问题的策略是什么?
    • 您应该在没有数据的情况下初始化片段,或者用虚拟数据填充它们,并在您的网络服务调用完成后在您的ActivityonResume() 中将数据加载到其中。也许在一切都已处理好的情况下显示ProgressDialog
    • 关于用户在片段中给出一些输入后,如果活动被破坏,我想恢复该数据的问题
    • 您始终可以在您的onRestoreInstanceState() 中初始化类级别变量,并在您的网络服务调用完成后使用该数据来初始化您的片段。我只是不明白问题出在哪里。
    • 嗯,好吧,所以你说在重建活动时,我在片段中显示虚拟数据 + 恢复的用户数据,当 web 服务返回时,它将再次创建片段,使用 web 服务数据并再次保存数据
    猜你喜欢
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 2014-01-20
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多