【发布时间】:2018-08-29 08:09:29
【问题描述】:
我有一个包含两个片段的简单活动:主要(包含项目列表)和详细信息。详细信息屏幕是一个片段,当单击主列表中的项目时显示该片段。 DetailFragment 正在使用 replace() 显示。
从详细信息屏幕返回后,我希望RecyclerView 中的滚动位置与我留下的完全相同。
只要replace() 为MainFragment 启动onDestroyView() 和onCreateView() 循环,在从DetailFragment 返回后,RecyclerView 的滚动位置为 0(在顶部),因为这是一个全新的RecyclerView,与离开DetailFragment之前的那个没有任何联系。
replace()ing 片段不启动 onSaveInstanceState() 被调用,这就是为什么使用here 概述的技术不适用的原因。
我想知道处理这个用例的正确方法是什么?
当然,我可以将位置保存在onDestroyView() 上,然后手动滚动到该位置,但也许我错过了一些明显的解决方案?
不欢迎使用add() 而不是replace() 的答案。
【问题讨论】:
标签: android android-recyclerview android-view android-scrollview android-savedstate