问题描述
我正在使用标签式活动。在其中一个选项卡中,我有两个按钮和一个 Recyclerview。在 RecyclerView 中,我有两个微调器和一个编辑文本。 第一个按钮的目的是在 RecyclerView 中添加一个新项目,第二个按钮是将选择的元素保存在微调器和编辑文本中。
我的问题是当屏幕旋转时,Recyclerview 被清空。我尝试使用 Recyclerview 的 LayoutManager 的 OnSaveInstanceState() 和 OnRestoreInstanceState 来保存状态,但它仍然被删除。
感谢您的帮助!
解决方法
默认情况下,活动和片段有一个 onSaveInstanceState() 方法,系统使用该方法提供一个 Bundle,您可以向其中写入原始数据和可打包对象。
只要您的数据简单,就可以。在你的情况下,它不是。
框架可能会决定销毁或重新创建 UI 控制器,以响应某些完全不受您控制的用户操作或设备事件。
例如屏幕旋转(方向改变)。
ViewModel 派上用场了。
ViewModel 是 Android 架构组件中的一个类,它具有生命周期感知能力。
有关更多信息,请查看 this 文档。