首页 > 解决方案 > 旧的 recyclerview 在旋转后保留为背景

问题描述

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

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

该代码非常标准且简单——带有数据绑定项的简单的adatper/recyclervyew。

标签: androidandroid-recyclerviewandroid-databinding

解决方案


即使您没有发布任何代码,这确实无济于事,但我将假设RecyclerView在 Fragment 中显示您的内容,并且在您的 Activity 的 onCreate 中,您有以下行。

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

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

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

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

这告诉经理“我不关心保存的状态。如果之前有一个片段,在添加这个之前删除它。”


推荐阅读