在选项卡式活动中使用 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的主要内容,如果未能解决你的问题,请参考以下文章

ScrollView 在选项卡式活动中无法正常工作

如何使用列表视图在选项卡式活动的片段中呈现 SQLite 表数据 [重复]

选项卡式活动中未显示工具栏标题

如何在使用片段和计时器的选项卡式活动上更新 UI

获取选项卡式活动的当前选定选项卡

如何在选项卡式活动中设置片段从右到左开始