【发布时间】:2019-07-26 06:16:45
【问题描述】:
我正在使用 Android Navigation 组件制作应用程序。但是我遇到了一个非常基本的问题,这可能会导致我的应用程序的整个开发出现问题。
情景
我有这个片段,在 onViewCreated 我正在观察我的视图模型中的一个字段。
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewModel = ViewModelProviders.of(this).get(EventDetailsViewModel::class.java)
viewModel.init(context!!,eventId)
viewModel.onEventDetailsUpdated().observe(this, Observer {
setEventDetails(it)
})
}
在setEventDetails 方法中,我用数据设置了recyclerviews。
问题
这个片段是一个带有卷轴的长片段。假设我向下滚动很长一段距离,然后单击一个按钮,将我带到另一个片段。
但是当我回到这个片段时,它再次将我带到顶部并执行它在第一次加载时所做的一切。 这可能令人不安。这有点像重新创建整个片段,而不是保持其旧状态。
我尝试了什么
我搜索了很多问题。并经历了This Github Query、This SO question、Another Git...但我无法解决我的问题。
请帮忙,在此先感谢。
【问题讨论】:
-
你正在替换片段或只是添加
-
天真的解决方案:尝试在暂停时将当前 scollY 保存在 viewmodel 中并滚动到 onResume 中保存的 scrollY
-
@NehaRathore 我正在使用android的jetpack导航组件,所以我正在调用
findNavController().navigate方法。我没有使用片段管理器 -
@TheBat 你有解决方案吗?我也遇到了同样的问题,我也在使用 NavController。
标签: android android-fragments android-jetpack android-architecture-navigation android-jetpack-navigation