Junior — Middle
74
Каким образом можно получить возвращённое значение из Fragment при возврате к нему через навигацию?
Companies where asked
Answer from AI
sobes.tech AI
Чтобы получить возвращённое значение из Fragment при возврате к нему через навигацию в Android, можно использовать механизм FragmentResultListener из Jetpack Navigation или setFragmentResult / setFragmentResultListener из библиотеки Fragment.
Пример с использованием setFragmentResult:
- В исходном фрагменте (куда возвращаемся) устанавливаем слушатель результата:
class FirstFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
parentFragmentManager.setFragmentResultListener("requestKey", this) { key, bundle ->
val result = bundle.getString("bundleKey")
// Используем result
}
}
}
- В целевом фрагменте (откуда возвращаемся) устанавливаем результат перед возвратом:
class SecondFragment : Fragment() {
private fun returnResult() {
val result = "данные"
parentFragmentManager.setFragmentResult("requestKey", bundleOf("bundleKey" to result))
findNavController().popBackStack()
}
}
Таким образом, при возврате к первому фрагменту он получит данные через слушатель результата.
Если используете Navigation Component, можно также передавать данные через Safe Args или использовать SavedStateHandle у NavBackStackEntry.