Ответ
- Через Activity
Фрагменты могут общаться через родительскую Activity, используя интерфейсы:
// Fragment A
(activity as? CallbackInterface)?.onEvent(data)
// Activity
override fun onEvent(data: Data) {
fragmentB.updateData(data)
}
- ViewModel (рекомендуемый способ)
Общая ViewModel в scope Activity:
val viewModel: SharedViewModel by activityViewModels()
viewModel.data.observe(viewLifecycleOwner) { data -> ... }
-
SharedPreferences/Local DB
Для простых данных, но не для частых обновлений. -
EventBus (Otto, GreenRobot)
Устаревший подход, создает сильные связи. -
Fragment Result API (с AndroidX)
// Fragment A
setFragmentResult("requestKey", bundleOf("data" to value))
// Fragment B
childFragmentManager.setFragmentResultListener("requestKey") { _, bundle -> ... }