在选项卡式活动中使用 RecyclerView 的 OnScreenRotation
Posted
技术标签:
【中文标题】在选项卡式活动中使用 RecyclerView 的 OnScreenRotation【英文标题】:OnScreenRotation with RecyclerView in tabbed Activity 【发布时间】:2021-06-21 06:32:42 【问题描述】:我正在使用选项卡式活动。在其中一个选项卡中,我有两个按钮和一个 Recyclerview。在 RecyclerView 我有两个微调器和一个编辑文本。 第一个按钮的目的是在 RecyclerView 中添加一个新项目,第二个按钮是将所选元素保存在微调器和编辑文本中。
我的问题是当屏幕旋转时,Recyclerview 被清空了。我尝试使用 Recyclerview 的 LayoutManager 的 OnSaveInstanceState() 和 OnRestoreInstanceState 来保存状态,但它仍然被删除。
如果有任何帮助,我将不胜感激!
【问题讨论】:
实现视图模型 你能详细说明吗? 【参考方案1】:默认情况下,Activity 和 Fragment 有一个 onSaveInstanceState() 方法,系统使用该方法来提供一个 Bundle,您可以在其中写入原始数据和可打包对象。
只要您的数据简单,就可以。在你的情况下,它不是。
框架可能会决定销毁或重新创建 UI 控制器,以响应您完全无法控制的某些用户操作或设备事件。
例如屏幕旋转(方向改变)。
ViewModel 来救场了。
ViewModel 是一个属于 android 架构组件的类,它具有生命周期意识。
更多信息请查看this 文档。
【讨论】:
所以如果我理解正确的话,我应该将来自 Recyclerview 的 Bundle 保存在 Viewmodel 中,例如在我的片段的 OnPause 中,然后将其从 Viewmodel 加载回 onResume 中的 Recyclerview?以上是关于在选项卡式活动中使用 RecyclerView 的 OnScreenRotation的主要内容,如果未能解决你的问题,请参考以下文章