【问题标题】:How to retrieve onSaveInstanceState() bundle in onResume()?如何在 onResume() 中检索 onSaveInstanceState() 包?
【发布时间】:2013-10-11 03:04:04
【问题描述】:

我在保存我的 Activity 状态时遇到问题。我在 SO 中搜索并阅读了很多问题,但我无法得到我的问题的答案。

我有一个 Activity A 和 2 个 FragmentsActivity A 保存Fragments 显示的数据。当我为我的设置Activity 启动一个新的Intent 时,Activity A 被暂停(未销毁),onPause()onSaveInstanceState() 方法被调用,所以我将所有数据保存在onSaveInstaceState() 中。

当我使用返回按钮Activity 从我的设置返回时,A 再次显示,但 onCreate() 方法没有被调用,因为 Activity 没有被破坏,而是 onResume() 方法被调用,但我失去了状态我在Activity A 中的变量,我无法访问我保存在onSaveInstanceState() 中的Bundle,因为没有调用onCreate()

所以onSaveInstanceState() 只有在你旋转屏幕时才有用?如何访问我保存在onSaveInstanceState() 中的所有数据?或者我应该将它们保存到文件或SharedPrefs 以便稍后在onResume() 中访问它们?

【问题讨论】:

  • 这没有多大意义...您丢失了在 Acitivy A 上声明的实例变量的数据?他们变成了空?

标签: android android-activity android-lifecycle


【解决方案1】:

这有帮助吗?
1. 在onStop() 中使用getIntent().putExtras() 将您的数据保存到Activity 的包中。
2.然后getIntent().getExtras()onResume()中检索。

而且你应该在访问包之前做一个空检查:)

【讨论】:

  • 效果很好!为了保存数据,我使用了getIntent().putExtras(),因为当时getIntent().getExtras() 为空,您还没有保存任何内容。
  • 你能分享一个例子吗?我正在尝试在 onStop/onResume 中实现这一点,但运气不佳。
  • Android 开发者推荐我们使用onSaveInstanceStateonRestoreInstanceStateonCreate 真是不可思议,但它非常不稳定。感谢分享,解决了我的问题
  • onResume() 中调用getIntent().getExtras() 时只需获取null。请详细点?
  • 如果用户经历了多个其他活动并最终回到原来的活动会发生什么?他们回来时的意图可能会被覆盖。
【解决方案2】:

您可以将 SavedInstance 中的所有内容保存在包或变量中。

并在 onActivityCreated 方法上设置数据,如:

@Override
    public void onActivityCreated(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onActivityCreated(savedInstanceState);

        // Do your stuff here

}

【讨论】:

  • 有时 onActivityCreated 没有被调用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多