Android 旋转后,旧的recyclerview将保留为背景

Android 旋转后,旧的recyclerview将保留为背景,android,android-recyclerview,android-databinding,Android,Android Recyclerview,Android Databinding,我正在使用带有mmvm+livedata+数据绑定的recyclerview。 每次旋转后,我都能看到旧的东西被粘在后面,就像背景一样 我可以看到适配器具有适当数量的项,实际上适配器只显示和滚动最新的数据。但是,在后台,您可以看到旧列表 代码非常标准和简单——带有数据绑定项的简单adatper/RecyclerByew 即使您没有发布任何代码,这确实没有帮助,我还是假设您正在片段中显示您的RecyclerView,并且在活动的onCreate中,您有以下行 getSupportFragmentM

我正在使用带有mmvm+livedata+数据绑定的recyclerview。 每次旋转后,我都能看到旧的东西被粘在后面,就像背景一样

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


代码非常标准和简单——带有数据绑定项的简单adatper/RecyclerByew

即使您没有发布任何代码,这确实没有帮助,我还是假设您正在片段中显示您的
RecyclerView
,并且在活动的onCreate中,您有以下行

getSupportFragmentManager()
    .beginTransaction()
    .add(frameLayout, fragment)
    .commit();
FragmentManager的一个优点是,即使在你旋转屏幕之后,它也能保存你的片段,这样内容就不会改变。只要
savedInstanceState
不为空,它就会执行此操作

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

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

这会告诉经理“我不关心保存的状态。如果以前有片段,请在添加此片段之前将其删除。”

谢谢您的帮助!然而,我发现了问题。显然,问题在于xml中的片段容器是FrameLayout。事实证明,当FrameLayout和RelativeLayout充当片段容器时,它们可能会有很多问题,应该使用LinearLayout来代替它们。LinearLayout中的片段?那个听起来不对,但如果它有效的话,好吧。是的,我在这里找到了解决方案。这听起来确实很奇怪,但并不正确/所以使用线性布局是非常有问题的。。。因为我无法将碎片添加到该容器中,只能替换。