Ответ
Fragment Result API — это механизм для передачи данных между фрагментами без прямых ссылок. Он использует FragmentManager как посредника, что помогает избежать утечек памяти и упрощает архитектуру.
Ключевые моменты:
- Отправитель устанавливает результат через
setFragmentResult() - Получатель подписывается на результат через
setFragmentResultListener() - Работает даже если получатель не создан в момент отправки
Пример:
// Отправитель
setFragmentResult("requestKey", bundleOf("data" to "Hello!"))
// Получатель
parentFragmentManager.setFragmentResultListener("requestKey", viewLifecycleOwner) { key, bundle ->
val data = bundle.getString("data")
// Обработка данных
}
Преимущества перед интерфейсами:
- Нет жесткой связности
- Автоматическая отписка при уничтожении LifecycleOwner
- Поддержка навигации через Navigation Component