PagingDataAdapter.refresh() 在片段导航后不工作
PagingDataAdapter.refresh() not working after fragment navigation
我在一个片段中使用 PagingDataAdapter
来显示用户 activity。
在片段 class 级别,
private var activityAdapter: ActivityFeedAdapter? = null
在onCreate()
我在使用前初始化,
activityAdapter = initAdapter()
也在onCreate()
,
this.lifecycleScope.launchWhenResumed {
viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
viewModel.getActivityFeed().observe(viewLifecycleOwner) {
it?.let {
activityAdapter?.submitData(lifecycle, it)
}
}
}
}
在 onStart()
之后,我在视图上设置了一个点击侦听器以从 UI 刷新 pagingdata
为,
binding?.refresh?.setOnClickListener {
activityAdapter?.refresh()
}
第一次加载时一切正常。但是在我导航到某个片段并返回到同一屏幕后,单击刷新仅处理单击事件但不刷新适配器。
顺便说一句,我已经在 onCreate()
中初始化了适配器,因为我需要适配器来维护跨屏幕转换的加载数据。谁帮帮我...
我遇到了错误...:))
在 onCreate()
中,我将 lifecycleOwner 的观察者设置为 viewLifecycleOwner
。
但是 viewLifecycleOwner
只在 onCreateView()
到 onDestroyView()
期间有效。所以在导航到另一个片段并从那里返回后,新的观察者没有被设置。由于 lifecycleOwner 被销毁,旧的观察者被取消。所以我可以刷新 PagingDataAdapter
.
中的更多数据
设置观察者时请重新考虑使用哪个lifecycleOwner。希望这可以帮助某人。 :)
我在一个片段中使用 PagingDataAdapter
来显示用户 activity。
在片段 class 级别,
private var activityAdapter: ActivityFeedAdapter? = null
在onCreate()
我在使用前初始化,
activityAdapter = initAdapter()
也在onCreate()
,
this.lifecycleScope.launchWhenResumed {
viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
viewModel.getActivityFeed().observe(viewLifecycleOwner) {
it?.let {
activityAdapter?.submitData(lifecycle, it)
}
}
}
}
在 onStart()
之后,我在视图上设置了一个点击侦听器以从 UI 刷新 pagingdata
为,
binding?.refresh?.setOnClickListener {
activityAdapter?.refresh()
}
第一次加载时一切正常。但是在我导航到某个片段并返回到同一屏幕后,单击刷新仅处理单击事件但不刷新适配器。
顺便说一句,我已经在 onCreate()
中初始化了适配器,因为我需要适配器来维护跨屏幕转换的加载数据。谁帮帮我...
我遇到了错误...:))
在 onCreate()
中,我将 lifecycleOwner 的观察者设置为 viewLifecycleOwner
。
但是 viewLifecycleOwner
只在 onCreateView()
到 onDestroyView()
期间有效。所以在导航到另一个片段并从那里返回后,新的观察者没有被设置。由于 lifecycleOwner 被销毁,旧的观察者被取消。所以我可以刷新 PagingDataAdapter
.
设置观察者时请重新考虑使用哪个lifecycleOwner。希望这可以帮助某人。 :)