在onCaveInstanceState期间创建的SavedInstantState未在onCreate中恢复

时间:2012-09-05 15:01:55

标签: android android-activity

我的应用程序是一个活动(现在是FragmentActivity的子类,虽然我认为不重要),让我们称之为活动A.

在其中,一个按钮通过使用startActivity()在没有特殊标志的情况下通过Intent启动它来导航到(比方说)Activity B.

两个活动都没有在清单中有任何特殊标志(SingleTop)等,而不是调用finish()等,即没有异常。

活动A的方法onSaveInstanceState()被调用,我保存了一些状态信息。

在活动B中,我按了BACK键并返回活动A.

调用onCreate()方法,但是“savedInstanceState”的Bundle为null,因此无法重建我之前保存的状态。

任何想法我做错了什么,以及如何确保我恢复状态。

BTW:在配置更改(比如旋转)上,一切正常....

2 个答案:

答案 0 :(得分:1)

当您通过按后退键返回活动A时,onCreate()被调用似乎很奇怪。通常,它应该只显示现有活动而不尝试重新创建它。我还认为,当您启动其他活动时,onSaveInstanceState()被调用也很奇怪。事实上,文档说明在启动活动B时可能不会调用onSaveInstanceState()

  

一个例子:当调用onPause()而不是   onSaveInstanceState(Bundle)是在前面启动活动B的时候   活动 - 答:系统可能会避免调用onSaveInstanceState(Bundle)   如果活动A没有在B的生命周期内被杀死,那么自从活动A.   A的用户界面状态将保持不变。

来自here

我认为还有其他事情正在发生。

答案 1 :(得分:0)

活动A从未被销毁,因此不应调用onCreate()。你能把一些代码放好吗?