android - 执行 Fragment replace() 后恢复 RecyclerView 的滚动位置
问题描述
我有一个包含两个片段的简单活动:主要(包含项目列表)和详细信息。详细信息屏幕是一个片段,当单击主列表中的项目时显示该片段。DetailFragment
正在使用 显示replace()
。
RecyclerView
从详细信息屏幕导航回来后,我希望滚动位置与我留下的完全相同。
只要replace()
启动onDestroyView()
和onCreateView()
循环发生MainFragment
,从 回来后DetailFragment
滚动RecyclerView
位置为 0(在顶部),因为这是一个全新RecyclerView
的,与离开之前的那个没有任何联系DetailFragment
。
replace()
ing 片段不会开始被onSaveInstanceState()
调用,这就是为什么使用此处概述的技术不适用的原因。
我想知道处理这个用例的正确方法是什么?
当然,我可以保存该位置,onDestroyView()
然后手动滚动到该位置,但也许我错过了一些明显的解决方案?
建议使用add()
而不是的答案replace()
是不受欢迎的。
解决方案
我已经RecyclerView
宣布为NestedScrollView
. 这就是问题所在。
当我摆脱NestedScrollView
一切时,一切都会自动处理。
推荐阅读
- vim - 如何删除多个以 [ 开头并以 ] 结尾的单词
- google-sheets - 在垂直轴上使用值小于 1 的对数刻度
- javascript - Typescript 无法转换抽象函数数组,导致错误,为什么?
- android - Android 预期 begin_object 但在第 1 行第 2 列路径 $
- javascript - 从 jQuery ajax 函数的 promise 语法到 try/catch/finally 和 async/await 的转换失败?
- r - 将列表的开头与时间戳匹配
- sql - SQL 相关矩阵
- javascript - 使用 Django 为 S3 上传创建签名请求
- javascript - 我试图向我的不和谐机器人添加播放命令,但是
- perl - 将数组添加到数组的哈希而不引用