轮换后,旧的 RecyclerView 仍保留为背景

old recyclerview stays as a background after rotation

我正在使用带有 mmvm+livedata+databinding 的 recyclerview。 每次旋转后,我都可以看到作为背景卡在后面的旧物品。

我可以看到适配器有适量的项目,确实适配器只显示和滚动最新的数据。但是在后台您可以看到旧列表。

代码非常标准和简单 - 简单明了 adatper/recyclervyew 带有数据绑定项。

即使您没有发布任何代码,这真的没有帮助,我将假设您正在片段中显示您的 RecyclerView,并且在您的 Activity 的 onCreate 中,您有以下行。

getSupportFragmentManager()
    .beginTransaction()
    .add(frameLayout, fragment)
    .commit();

FragmentManager 的优点之一是即使在您旋转屏幕后它仍会保留您的片段,这样内容就不会改变。只要 savedInstanceState 不为空,它就会执行此操作。

这意味着如果您只是添加片段并检查保存的状态,它将被放置在管理器保存的片段之上,这就是您正在做的。然而,利用此功能来维护状态需要一些编码工作,而且我无法帮助您,因为我不知道您的代码是什么样的。因此,最简单的解决方案是将 add 更改为 replace

getSupportFragmentManager()
    .beginTransaction()
    .replace(frameLayout, fragment)
    .commit();

这告诉经理"I don't care about saved state. If there was a fragment there before, just remove it before adding this one."