Давным-давно нормальным и предлагаемым способом взаимодействия между фрагментами было создание интерфейса, расширенного в 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
})
Есть ли у этого подхода недостатки? Есть ли более простой / элегантный способ подойти к этому?