Sobes.tech
Junior — Middle

Czy można mieć pewność, że zmieniając ustawienia, zostanie wywołany dokładnie konstruktor fragmentu użytkownika?

sobes.tech AI

Odpowiedź od AI

Nie, nie można być pewnym, że podczas zmiany ustawień zostanie wywołany dokładnie konstruktor fragmentu użytkownika.

W Android system może ponownie tworzyć fragmenty, używając konstruktora bez parametrów (domyślnego), szczególnie podczas przywracania stanu po zmianie konfiguracji (np. obrót ekranu).

Dlatego zaleca się:

  • Używanie domyślnego konstruktora bez parametrów.
  • Przekazywanie parametrów przez Bundle za pomocą metody setArguments().
  • Pobieranie parametrów w metodzie onCreate() lub onCreateView() z getArguments().

To zapewnia poprawne przywracanie stanu fragmentu przez system.

Przykład:

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")
        // Użyj param
    }
}