Почему нельзя передать данные через конструктор в Fragment

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

Ответ

Фрагменты пересоздаются системой (например, при повороте экрана), и Android автоматически вызывает конструктор без параметров. Если передавать данные через конструктор, они будут потеряны при пересоздании.

Вместо этого используйте Bundle через arguments:

// Создание фрагмента с аргументами
val fragment = MyFragment().apply {
    arguments = bundleOf("key" to value)
}

// Чтение в фрагменте
val value = arguments?.getString("key")

Так данные сохраняются при пересоздании. Альтернативно можно использовать ViewModel или Dagger для инъекции зависимостей.