Назад к вопросам
Junior — Middle
79
Можно ли реализовать использование аргументов в конструкторе для Fragment в Android?
Компании, где спрашивали
Магнит Тех
Ответ от нейросети
sobes.tech AI
В Android не рекомендуется использовать конструкторы с аргументами для Fragment, так как система может в любой момент пересоздать фрагмент, вызвав конструктор без параметров.
Правильный способ передачи данных во Fragment — использовать метод setArguments(Bundle) и получать данные через getArguments() внутри фрагмента.
Пример создания фрагмента с аргументами:
class MyFragment : Fragment() {
companion object {
private const val ARG_PARAM = "param"
fun newInstance(param: String): MyFragment {
val fragment = MyFragment()
val args = Bundle()
args.putString(ARG_PARAM, param)
fragment.arguments = args
return fragment
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val param = arguments?.getString(ARG_PARAM)
// Используем param
}
}
Таким образом, данные сохраняются в Bundle и корректно восстанавливаются системой при пересоздании фрагмента.