android - 旧的 recyclerview 在旋转后保留为背景
问题描述
我正在使用带有 mmvm+livedata+databinding 的 recyclerview。每次旋转后,我都可以看到作为背景卡在后面的旧物品。
我可以看到适配器有适量的项目,实际上适配器只显示和滚动最新的数据。但是,在后台您可以看到旧列表。
该代码非常标准且简单——带有数据绑定项的简单的adatper/recyclervyew。
解决方案
即使您没有发布任何代码,这确实无济于事,但我将假设您RecyclerView
在 Fragment 中显示您的内容,并且在您的 Activity 的 onCreate 中,您有以下行。
getSupportFragmentManager()
.beginTransaction()
.add(frameLayout, fragment)
.commit();
FragmentManager 的优点之一是即使在您旋转屏幕后它也会保留您的片段,这样内容就不会改变。只要savedInstanceState
不为空,它就会执行此操作。
这意味着,如果您只是添加片段并检查保存状态,它将被放置在经理保存的片段上,这就是您正在做的事情。然而,利用这个特性来维护状态需要一些编码工作,我无法帮助你,因为我不知道你的代码是什么样的。因此,最简单的解决方案就是更改add
为replace
.
getSupportFragmentManager()
.beginTransaction()
.replace(frameLayout, fragment)
.commit();
这告诉经理“我不关心保存的状态。如果之前有一个片段,在添加这个之前删除它。”
推荐阅读
- javascript - 将一个数组中的属性添加到具有相同键的另一个数组中
- php - 如何通过 PHP 启用 SQLite 扩展结果代码?
- html - 居中和水平对齐两个 div,然后在较小的屏幕上垂直对齐
- rdp - Azure 云服务远程桌面不工作
- c++ - 从文件 c++ 中读取类对象(私有成员变量)
- estimote - 将信息动态推送到 Estimote Beacon?
- python - 将 MP3 转换为 WAV
- docker - Ansible:将文件复制到 Docker 卷
- matlab - Matlab - 帮助使用名称模式列出文件
- css - Angular - 在路线更改时为外部元素设置动画