当前位置: 首页 > 知识库问答 >
问题:

一个RecyclerView是否应该记住它在弹出Backback后被重新创建时的位置?

越福
2023-03-14

我有一个片段,我用一个新的交易替换它

该片段包含一个包含大量项目的RecyclerView。

当用户按下新片段上的finish按钮时,我弹出backbackback,然后重新创建旧片段。

这会导致再次调用OnCreateView方法,并且一切正常。

我的问题是它中的RecycraView被重新创建,适配器被重置,但它似乎会自动移动到它离开的位置(我假设只有当我使用事务添加而不是事务替换时才会发生)

作为补充说明,对于可见项,适配器仍然调用OnBindViewHolder和OnCreateViewHolder。

我的问题是,为什么会发生这种情况?既然整个片段都被重新创建了,它不应该重置到第一个位置吗?除了在加载新片段之前手动调用scrollToPosition(0)之外,还有其他方法可以让片段不记得任何东西,并在返回时完全重新创建吗?

共有2个答案

杜绍元
2023-03-14

当删除或替换片段并将事务添加到后堆栈时,被删除的片段将停止(而不是销毁)。如果用户导航回以恢复片段,它将重新启动。如果不将事务添加到后堆栈中,那么在删除或替换时,片段将被销毁。

http://sapandiwakar.in/replacing-fragments/

希望这有帮助!

百里金林
2023-03-14

LinearLayoutManager将滚动位置存储在onSaveInstanceState中。由于SavedState parcelable与视图id一起存储,因此只要从Backback返回时位置未超出边界,滚动位置就会恢复。

 类似资料:
  • 在开发一个针对4.1以上所有版本的Android应用程序时,我观察到卸载我的应用程序并重新安装它并不能清除它的数据。 我试图通过访问来确保数据库在卸载后消失了,而且确实该文件夹在卸载期间被删除了。 我试图删除应用程序通过访问设置页面,通过钛备份和结果是相同的。该设备是运行V6.0的根Nexus5。 这种奇怪行为的原因是什么?

  • 问题内容: 所以,我不确定那是什么。如果在 ModuleA中 ,我有: 在 ModuleB中 ,我有: 在主程序中,我有: 因此,当我运行主程序时,我想我将创建两个猫鼬“实例”;一个连接到pathA,一个连接到pathB,对吗? 另外,在模块B中,在我连接到pathB之前,它是连接到pathA还是什么都没有? 谢谢。 问题答案: 我刚刚对最新的节点V0.4.6做了一些测试。我确认了以下内容: 从“

  • 我有一个大程序,我几乎在每个类中都使用我的主类。我通常通过getInstance方法访问,但是每次我需要的时候我都会这样做。例如: 现在我想知道这是否非常有效,如果我为它声明一个变量并访问该变量是否更好: 如果我只在一种方法中需要它,如果我只在方法本身中声明它,它会更有效和更节省内存吗?提前谢谢!

  • 问题内容: 我只是想知道:在Java应用程序中,每次需要连接到FTP服务器时,我应该创建一个新的FTPClient对象,还是应该创建一个FTPClient()对象,并在每次连接至一个FTP服务器? 问题答案: 重用会更好,因为每次创建新连接甚至与新服务器时都不需要新实例。因为连接和断开连接方法可以为您完成这项工作。 因此,请尽可能多地重用对象。

  • 问题内容: 例如,第一次运行应用程序时(或在清除/ logs目录后立即运行),我希望log4j将应用程序的日志写入名为log.0的文件中。然后,我退出该应用程序并重新启动它,我希望将日志写入log.1。等等。 我想将其保留在配置文件中,尽管如果不能,我想在设置log4j的情况下总是可以在我的应用程序中进行操作。 这可能吗?如果是这样,怎么办? 问题答案: 可能这就是您要寻找的 http://vee

  • configure脚本创建一个名为'config.status'的文件,用它描述在包最后一次进行配置时 给出的配置选项。该文件是一个shell脚本文件,如果运行它,将重新创建相同的配置。 你可以用'--recheck'选项调用'config.status'以更新它自身。如果你修改了configure, 该选项是有用的,这是因为某些测试的结果可能会与上一次运行的结果不同。选项'--recheck'以