Android 旋转后,旧的recyclerview将保留为背景
我正在使用带有mmvm+livedata+数据绑定的recyclerview。 每次旋转后,我都能看到旧的东西被粘在后面,就像背景一样 我可以看到适配器具有适当数量的项,实际上适配器只显示和滚动最新的数据。但是,在后台,您可以看到旧列表Android 旋转后,旧的recyclerview将保留为背景,android,android-recyclerview,android-databinding,Android,Android Recyclerview,Android Databinding,我正在使用带有mmvm+livedata+数据绑定的recyclerview。 每次旋转后,我都能看到旧的东西被粘在后面,就像背景一样 我可以看到适配器具有适当数量的项,实际上适配器只显示和滚动最新的数据。但是,在后台,您可以看到旧列表 代码非常标准和简单——带有数据绑定项的简单adatper/RecyclerByew 即使您没有发布任何代码,这确实没有帮助,我还是假设您正在片段中显示您的RecyclerView,并且在活动的onCreate中,您有以下行 getSupportFragmentM
代码非常标准和简单——带有数据绑定项的简单adatper/RecyclerByew 即使您没有发布任何代码,这确实没有帮助,我还是假设您正在片段中显示您的
RecyclerView
,并且在活动的onCreate中,您有以下行
getSupportFragmentManager()
.beginTransaction()
.add(frameLayout, fragment)
.commit();
FragmentManager的一个优点是,即使在你旋转屏幕之后,它也能保存你的片段,这样内容就不会改变。只要savedInstanceState
不为空,它就会执行此操作
这意味着,如果您只是在检查保存状态的情况下添加片段,它将被放置在管理器保存的片段上,这就是您正在做的。然而,利用这个特性来维护状态需要一些编码工作,我不能帮你,因为我不知道你的代码是什么样子。因此,最简单的解决方法就是将添加更改为替换
getSupportFragmentManager()
.beginTransaction()
.replace(frameLayout, fragment)
.commit();
这会告诉经理“我不关心保存的状态。如果以前有片段,请在添加此片段之前将其删除。”谢谢您的帮助!然而,我发现了问题。显然,问题在于xml中的片段容器是FrameLayout。事实证明,当FrameLayout和RelativeLayout充当片段容器时,它们可能会有很多问题,应该使用LinearLayout来代替它们。LinearLayout中的片段?那个听起来不对,但如果它有效的话,好吧。是的,我在这里找到了解决方案。这听起来确实很奇怪,但并不正确/所以使用线性布局是非常有问题的。。。因为我无法将碎片添加到该容器中,只能替换。