Как вернуть значение из Fragment при навигации назад

«Как вернуть значение из Fragment при навигации назад» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для возврата значения из Fragment при навигации назад можно использовать FragmentManager.setFragmentResult().

  1. В Fragment, который возвращает данные:
setFragmentResult(
    "requestKey",
    bundleOf("resultKey" to "yourValue")
)
findNavController().popBackStack()
  1. В Fragment/Activity, который ожидает результат:
parentFragmentManager.setFragmentResultListener("requestKey", viewLifecycleOwner) { key, bundle ->
    val result = bundle.getString("resultKey")
    // Обработка результата
}

Важно: Используйте viewLifecycleOwner во Fragment, чтобы избежать утечек памяти. Для Activity можно использовать lifecycleOwner.