基本上,我在一项活动中有一个TextView
和两个EditText
视图。从那个活动开始,一个不同的活动开始了。如果我按下设备上的硬件后退按钮(结束第二个活动),视图的状态与以前相同,这很好。但是,在按下(第二个活动的)操作栏上的后退按钮后,视图会失去以前的状态。
根据文档,如果您为视图提供 ID(例如 EditText、TextView 等小部件),android 将自动保存它们的状态。
例如,EditText 小部件保存用户输入的任何文本,而 CheckBox 小部件保存它是否被选中。您唯一需要做的工作是为每个要保存其状态的小部件提供唯一 ID(带有 android:id 属性)。如果小部件没有 ID,则系统无法保存其状态。
对于需要保存其状态的每个视图,我都有一个唯一的 ID。我也尝试过android:saveEnabled="true"
在 XML 中显式使用textView.setSaveEnabled(true);
但无济于事。
我已经尝试为两者实现onSaveInstanceState
和onRestoreInstanceState
调用super
第一件事。onSaveInstanceState
被按预期调用,但从onRestoreInstanceState
未被调用。此外,savedInstanceState
传递给onCreate
总是null
。
在清单中,我已经尝试过android:alwaysRetainTaskState="true"
,android:stateNotNeeded="false"
但没有运气。
我可以发布代码,但我不确定什么代码是相关的,因为系统似乎没有做它应该做的事情。什么可能导致视图的状态不被android自动保存?任何帮助表示赞赏,如果需要,我可以发布特定代码。
旁注:如果有任何区别,我正在使用 AppCompat。