Sobes.tech
Назад к вопросам
Junior — Middle
70

Каким образом осуществляется обмен данными между фрагментами при использовании FragmentManager?

Компании, где спрашивали
Т-БанкТ-Банк

Ответ от нейросети

sobes.tech AI

Обмен данными между фрагментами при использовании FragmentManager обычно осуществляется через активити, которое выступает посредником. Фрагменты не должны напрямую взаимодействовать друг с другом, чтобы сохранить слабую связанность.

Основные способы обмена данными:

  1. Через методы активити:

    • Фрагмент отправляет данные в активити (например, через интерфейс или прямой вызов метода).
    • Активити передаёт данные другому фрагменту, вызывая его публичные методы.
  2. Использование ViewModel с жизненным циклом активности:

    • Общая ViewModel позволяет фрагментам наблюдать за одними и теми же данными.
    • Изменения в ViewModel автоматически отражаются во всех подписанных фрагментах.
  3. Использование setFragmentResultListener и setFragmentResult (начиная с Fragment 1.3.0):

    • Фрагмент отправляет результат через FragmentManager.
    • Другой фрагмент слушает эти результаты и реагирует на них.

Пример с использованием setFragmentResult:

// Отправка результата из первого фрагмента
setFragmentResult("requestKey", bundleOf("dataKey" to "value"))

// В другом фрагменте слушаем результат
setFragmentResultListener("requestKey") { key, bundle ->
    val result = bundle.getString("dataKey")
    // обработка результата
}