2 votes

Dois-je transmettre l'instance du fragment ou le propriétaire renvoyé par getViewLifecycleOwner lors de l'appel à setLifecycleOwner sur la liaison de données ?

Quelle approche est correcte :

  1. Passing Fragment instance comme lifecycleOwner :

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
        val binding = FragmentEventSettingsBinding.inflate(inflater, container, false)
        binding.lifecycleOwner = this
        return binding.root
    }
  2. Passing viewLifecycleOwner de la Fragment :

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
        val binding = FragmentEventSettingsBinding.inflate(inflater, container, false)
        binding.lifecycleOwner = viewLifecycleOwner
        return binding.root
    }

2voto

Royi Points 156

La solution recommandée est d'utiliser le cycle de vie de la vue du fragment via getViewLifecycleOwner() ou getViewLifecycleOwnerLiveData() qui ont été ajoutés dans Support Library 28.0.0 et AndroidX 1.0.0, afin que LiveData supprime les observateurs chaque fois que la vue du fragment est détruite.

Référence : 5 erreurs courantes lors de l'utilisation des composants d'architecture

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X