Sobes.tech
Junior — Middle

Da li možete biti sigurni da će se prilikom promene podešavanja pozvati tačno korisnički konstruktor fragmenta?

sobes.tech АИ

Одговор од АИ

Не, није могуће бити сигуран да ће при променама подешавања бити позван управо кориснички конструктор фрагмента.

У 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
    }
}