使用LiveData而不是回调地狱在片段之间进行交互

问题描述 投票:0回答:1

很久以前,关于片段之间进行通信的正常建议方法是创建一个在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
})

此方法是否有缺点?有没有更简单/更优雅的方法来解决这个问题?

android android-fragments kotlin android-livedata
1个回答
0
投票
okayButton.setOnClickListener { viewModel.onOkayButtonClicked() }

此LiveData将由NavigationComponent观察,或用于处理片段事务的类似物,它将为您进行转换。

所有这些过渡,我建议在活动级别进行。
© www.soinside.com 2019 - 2024. All rights reserved.