Sobes.tech
Junior — Middle
72

Каким образом можно получить возвращённое значение из Fragment при возврате к нему через навигацию?

Companies where asked
Альфа КапиталАльфа Капитал

Answer from AI

sobes.tech AI

Чтобы получить возвращённое значение из Fragment при возврате к нему через навигацию в Android, можно использовать механизм FragmentResultListener из Jetpack Navigation или setFragmentResult / setFragmentResultListener из библиотеки Fragment.

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

  1. В исходном фрагменте (куда возвращаемся) устанавливаем слушатель результата:
class FirstFragment : Fragment() {
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        parentFragmentManager.setFragmentResultListener("requestKey", this) { key, bundle ->
            val result = bundle.getString("bundleKey")
            // Используем result
        }
    }
}
  1. В целевом фрагменте (откуда возвращаемся) устанавливаем результат перед возвратом:
class SecondFragment : Fragment() {
    private fun returnResult() {
        val result = "данные"
        parentFragmentManager.setFragmentResult("requestKey", bundleOf("bundleKey" to result))
        findNavController().popBackStack()
    }
}

Таким образом, при возврате к первому фрагменту он получит данные через слушатель результата.

Если используете Navigation Component, можно также передавать данные через Safe Args или использовать SavedStateHandle у NavBackStackEntry.