【发布时间】:2019-07-01 18:03:18
【问题描述】:
我正在开发一个应用程序,并且正在使用 android 架构组件。我有一个用于存储和管理 UI 数据的 ViewModel。我有一个活动,它显示从 Room 数据库加载为 LiveData 的文本项目列表。包含 LiveData 的视图是可编辑的。基本上,它是一个包含 EditTexts 的 RecyclerView。
我想知道的是用户更改 EditText 的值之一,然后发生导致活动重新启动的某些情况,例如配置更改。据我了解,该活动被再次创建,这意味着 onChanged() 回调被再次调用,并且列表被重新填充来自数据库的原始 LiveData。因此,我希望 EditText(其文本由用户编辑的那个)显示在用户更改文本之前分配给它的原始 LiveData。但是,当我旋转设备的屏幕时,编辑后的文本仍然存在。
这是我想要的,但我不认为这是默认行为。我想知道为什么编辑的文本在配置更改后仍然存在,因为它从未保存到数据库中。这只是 EditTexts 的一个特殊属性吗?该用户的帖子描述了类似的情况,即他们的 EditTexts 在屏幕旋转后保留了他们最近的状态,而他们的 TextViews 被清除:Restoring state of TextView after screen rotation?
【问题讨论】:
标签: android viewmodel android-room