很久以前,关于片段之间进行通信的正常建议方法是创建一个在Activity中扩展的接口。基本上,如果我想从片段B到片段C中获取数据,我必须先将片段B到MainActivity,然后再将MainActivity到片段C。在我看来-完全混乱。
刚开始使用LiveData
并考虑使用它而不是回调-例如:
FragmentInteraction.kt
val onOkayButtonClicked = SingleLiveEvent<Void>()
val onCancelButtonClicked = SingleLiveEvent<Void>()
FragmentA.kt
onOkayButtonClicked.call()
FragmentB.kt
onOkayButtonClicked.observe(viewLifecycleOwner, Observer {
// do whatever u want
})
此方法是否有缺点?有没有更简单/更优雅的方法来解决这个问题?
okayButton.setOnClickListener { viewModel.onOkayButtonClicked() }
此LiveData将由NavigationComponent观察,或用于处理片段事务的类似物,它将为您进行转换。
所有这些过渡,我建议在活动级别进行。