我有一个应用程序,在其中以编程方式创建一个EditText
视图。我使用setId()
为该视图分配一个ID。
myEditText.setId(100);
为了使Android在暂停/停止应用程序时自动保存对象的状态(就像我在这里被建议的那样),您需要在代码中执行以下操作。在以下情况下,它工作:
- (1)当我使用“主页”按钮离开应用程序时:如果我回到应用程序,则恢复显示文本的对象状态,如预期。
- (2)屏幕方向更改时(涉及Android通过
Bundle
自动销毁活动并将其还原)。也保持对象状态。
但是,在以下情况下,它不起作用:
- (3)当我使用“返回”按钮离开应用程序时:如果我再次回到应用程序,则
EditText
对象为空。
为什么会发生这种情况? Android确实区分使用“主页”和使用“返回”离开应用程序吗?根据文档,即使活动被销毁,对象的状态也应该通过 Bundle
自动保存。这显然在(2)中发生了。但不是在(3)中!
如果这是正常行为,那么当用户按“返回”键时,我如何使应用程序的状态自动保存和恢复?我知道我可以使用SharedPreferences来完成这项工作,但我宁愿Android像在情况(1)和(2)中一样自动执行此操作。
这个问题至少发生在Android 4.0和4.2中(我没有测试其他版本)。