Sobes.tech
Back to questions
Junior — Middle
80

Можно ли быть уверенным, что при изменении настроек будет вызван именно пользовательский конструктор фрагмента?

Companies where asked
Viasat tech

Answer from AI

sobes.tech AI

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

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

Поэтому рекомендуется:

  • Использовать дефолтный конструктор без параметров.
  • Передавать параметры через Bundle с помощью метода setArguments().
  • Извлекать параметры в методе onCreate() или onCreateView() из getArguments().

Это гарантирует корректное восстановление состояния фрагмента системой.

Пример:

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

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val param = arguments?.getString("param_key")
        // Используем param
    }
}