首页 > 解决方案 > 如何在jetpack-navigation中保存状态列表

问题描述

我使用 jetpack-navigation 设计了一个应用程序当我从一个片段移动到另一个片段时,出现如下图所示的问题,列表的状态消失了。

事实上,当从一个布局返回时,文章将在堆栈中重新创建,并且不会保存列表状态,用户将不得不再次滚动。请帮我?

喷气背包导航

标签: androidandroid-fragmentsandroid-jetpackandroid-viewmodelandroid-jetpack-navigation

解决方案


每次导航操作都会重新创建片段。您可以将滚动位置存储在您的活动中并从那里加载它。但是这样做,滚动位置将在活动重新创建(例如旋转设备)时丢失。

更好的方法是将其存储在 ViewModel 中。(见https://developer.android.com/topic/libraries/architecture/viewmodel

视图模型在活动娱乐中幸存下来,您可以存储滚动位置。

然后你可以加载这个位置并告诉列表滚动到这个位置(例如,通过调用 scrollToPositionWithOffset(...) 来调用带有 LinearLayoutManager 的 RecyclerView)


推荐阅读