2017-09-03 3 views
0

Selon le docs for ConstraintSet, il y a trois implémentations de la méthode clone():Quelle est la différence entre les différentes implémentations de clone() dans ConstraintSet?

  • void clone(ConstraintLayout constraintLayout)
  • void clone(ConstraintSet set)
  • void clone(Context context, int constraintLayoutId)

L'explication pour chaque version dans la documentation est un peu vague, donc je ne suis pas tout à fait clair sur ce que sont les différences entre les trois et quand je devrais utiliser chacun d'eux. J'ai été capable d'utiliser le premier sans problèmes ou quoi que ce soit chaque fois que j'en avais besoin.

Répondre

0

ConstraintSet comprend ce domaine privé.

private HashMap<Integer, ConstraintSet.Constraint> mConstraints; 

Chacune des trois méthodes clone() supprimera toutes les entrées existantes de ce Map puis le remplir de sauvegarde en fonction de ce que vous avez passé dans Essentiellement, chaque de ces méthodes tournera l'instance ConstraintSet que vous invoquez dans un doublon des arguments.

void clone(ConstraintSet set)

Cette version efface la carte mConstraints et re-remplit avec les contraintes à l'intérieur du passé dans ConstraintSet.

void clone(ConstraintLayout constraintLayout)

Cette version efface la carte mConstraints et re-remplit avec tout les contraintes sont nécessaires pour produire une copie du passé dans ConstraintLayout.

void clone(Context context, int constraintLayoutId)

Cette version utilise le passé dans Context et id de mise en page pour gonfler une instance ConstraintLayout d'une ressource de mise en page, puis appelle clone(ConstraintLayout) (la méthode ci-dessus).