在fragment的onViewCreated里observe livedata的变化的原因

Fragment.onViewCreated()是在Fragment.onCreateView()函数之后调用的,调用到它时 表明fragment视图层级结构已创建完毕。在onViewCreated()函数里观察LiveData可以保证“展示crime的视图已经准备完毕”,这也解释了为什么你传给observe()函数的不是fragment自身, 而是viewLifecycleOwner.只有你的fragment视图处于有效状态——还在屏幕上, 你才需要接受crime更新。

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        
        crimeListViewModel.crimeListLiveData.observe(
            viewLifecycleOwner,
            { crimes ->
                crimes?.let {
                    Log.i(TAG, "Got crimes ${crimes.size}")
                    updateUI(crimes)
                }
            }
        )
    }

 

posted @ 2021-05-27 20:28  ou尼酱~~~  阅读(283)  评论(0)    收藏  举报