Junior — Middle
86
Каким образом осуществляется обмен данными между фрагментами при использовании FragmentManager?
Сұралған компаниялар
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")
// обработка результата
}