我有一个片段,我用一个新的事务替换
该Fragment包含一个包含大量项目的RecyclerView.
当用户按下新片段上的完成按钮时,我弹出后台堆栈,并重新创建旧片段.
我的问题是它中的RecyclerView被重新创建,适配器被重置,但它似乎自动移动到它离开的位置(我假设只有在我使用事务添加而不是事务替换时才会发生)
作为旁注,适配器仍然为可见项调用OnBindViewHolder和OnCreateViewHolder.
我的问题是,为什么会发生这种情况?因为重新创建整个片段不应该重置到第一个位置?除了在加载新片段之前手动调用scrollToPosition(0)之外,还有另一种方法可以使片段不记得任何内容并在返回时实际完全重新创建吗?
最佳答案
LinearLayoutManager将滚动位置存储在onSaveInstanceState中.由于SavedState parcelable与视图id一起存储,只要在从Backstack返回时位置不超出边界,就会恢复滚动位置.