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

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

Ответ

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

Вместо этого используйте setArguments(Bundle) для передачи данных:

class MyFragment : Fragment() {
    companion object {
        fun newInstance(param: String): MyFragment {
            val args = Bundle().apply { putString("key", param) }
            return MyFragment().apply { arguments = args }
        }
    }
}

Так данные сохранятся при пересоздании фрагмента.