Android Fragments 片段导航后,PagingDataAdapter.refresh()不起作用

2nc8po8w  于 2022-11-24  发布在  Android
关注(0)|答案(1)|浏览(254)

我在一个片段中使用PagingDataAdapter来显示用户活动。在片段类级别,

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()中初始化了适配器,因为我需要适配器在屏幕转换中维护加载的数据。有人能帮助我吗...

csbfibhn

csbfibhn1#

我得到了错误...:))
onCreate()中,我将观察者和生命周期所有者设置为viewLifecycleOwner
但是viewLifecycleOwner只在onCreateView()onDestroyView()之间是活动的。所以在导航到不同的片段并从那里返回之后,新的观察者没有被设置。旧的观察者由于生命周期所有者被破坏而被取消。所以我可以刷新PagingDataAdapter中的更多数据。
当设置观察者时,请重新考虑要使用哪个生命周期所有者。希望这可能会对某些人有所帮助。:)

相关问题