Sobes.tech
Junior — Middle

Kas on võimalik olla kindel, et seaded muutes kutsutakse just kasutaja konstruktor?

sobes.tech AI

Vastus AI-lt

Ei, ei saa olla kindel, et konfiguratsiooni muutmisel kutsutakse täpselt kasutaja fragmenti konstruktor.

Android süsteem võib uuesti luua fragmentide kasutades parameetritut (vaikimisi) konstruktorit, eriti pärast konfiguratsiooni muutust (näiteks ekraani pööramist).

Seetõttu soovitatakse:

  • Kasutada vaikimisi parameetritut konstruktorit.
  • Edastada parameetreid Bundle kaudu kasutades meetodit setArguments().
  • Parameetreid välja lugeda onCreate() või onCreateView() meetodites getArguments()-st.

See tagab süsteemi poolt korrektse fragmenti oleku taastamise.

Näide:

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")
        // Kasutada param
    }
}