Back to questions
Т-Банк
Junior — Middle
69
Каким образом осуществляется обмен данными между фрагментами при использовании FragmentManager?
Companies where asked
Answer from AI
sobes.tech AI
Обмен данными между фрагментами при использовании FragmentManager обычно осуществляется через активити, которое выступает посредником. Фрагменты не должны напрямую взаимодействовать друг с другом, чтобы сохранить слабую связанность.
Основные способы обмена данными:
-
Через методы активити:
- Фрагмент отправляет данные в активити (например, через интерфейс или прямой вызов метода).
- Активити передаёт данные другому фрагменту, вызывая его публичные методы.
-
Использование ViewModel с жизненным циклом активности:
- Общая ViewModel позволяет фрагментам наблюдать за одними и теми же данными.
- Изменения в ViewModel автоматически отражаются во всех подписанных фрагментах.
-
Использование setFragmentResultListener и setFragmentResult (начиная с Fragment 1.3.0):
- Фрагмент отправляет результат через FragmentManager.
- Другой фрагмент слушает эти результаты и реагирует на них.
Пример с использованием setFragmentResult:
// Отправка результата из первого фрагмента
setFragmentResult("requestKey", bundleOf("dataKey" to "value"))
// В другом фрагменте слушаем результат
setFragmentResultListener("requestKey") { key, bundle ->
val result = bundle.getString("dataKey")
// обработка результата
}