Sobes.tech
Junior — Middle

Milyen biztonságos módszerekkel lehet adatokat átadni Fragmentek között a konstruktoron keresztül?

sobes.tech MI

Válasz az MI-től

Androidben nem ajánlott közvetlenül a konstruktoron keresztül adatokat átadni Fragmentek között, mivel a rendszer bármikor újra létrehozhatja a fragmentet paraméter nélküli konstruktor hívásával. Ehelyett biztonságos és szabványos módszer az argumentumok használata Bundle-en keresztül, és a setArguments()/getArguments() metódusok alkalmazása.

Biztonságos adatátvitel példája:

class MyFragment : Fragment() {
    companion object {
        private const val ARG_PARAM = "param"

        fun newInstance(param: String): MyFragment {
            val fragment = MyFragment()
            val args = Bundle()
            args.putString(ARG_PARAM, param)
            fragment.arguments = args
            return fragment
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val param = arguments?.getString(ARG_PARAM)
        // param használata
    }
}

Így az adatok a Bundle-ben tárolódnak, amit a rendszer automatikusan ment és visszaállít a fragment újraalkotásakor. Paraméteres konstruktor használata nem biztonságos, és hibákhoz vezethet.

Ha feltétlenül konstruktorral szeretné használni, hagyja üresen, és adja át az adatokat Bundle segítségével, vagy használjon ViewModelt az adatok cseréjéhez a fragmentek között.