基本上,我在一项活动中有一个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。