Y a-t-il une différence entre getLayoutInflater() et.getSystemService (Context.MISE EN PAGE INFLATER SERVICE)
4 réponses
Non
tant que l'activité ou la fenêtre qui appelle getLayoutInflater()
a le même contexte que getSystemService()
, il n'y a pas de différence.
preuve vous pouvez tracer le LayoutInflater retourné par getLayoutInflater()
à LayoutInflater.à partir de() et vous pouvez le voir c'est juste un raccourci pour getSystemService()
à partir du code source:
public static LayoutInflater from(Context context) {
LayoutInflater LayoutInflater =
(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (LayoutInflater == null) {
throw new AssertionError("LayoutInflater not found.");
}
return LayoutInflater;
}
c'est ainsi que vous définissez un LayoutInflater.
LayoutInflater inflater = (LayoutInflater)context.getSystemService (Context.LAYOUT_INFLATER_SERVICE);
et getLayoutInflater()
donne simplement "un accès rapide à l'instance LayoutInflater que la fenêtre a récupérée de son contexte" (de la "documentation 151960920 ) en retournant la LayoutInflater.
de même, getSystemService(Context.LAYOUT_INFLATER_SERVICE)
est utilisé pour récupérer un LayoutInflater pour gonfler les ressources de layout dans ce contexte.
donc, en fait il y a NON la différence entre les deux.
Source: Documentation
il y a au moins une situation où seulement
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
doit être utilisé à la place de la contrepartie
getLayoutInflater
cette situation est dans une classe d'objet arbitraire. Par exemple, j'ai une instance d'appel de classe objectA. Dans objectA, je veux gonfler une vue sur la vue parent (se produisent dans ArrayAdapter qui gonfle la rangée personnalisée sur l'its listview. Dans ce cas, contexte.getLayoutInflater ne fonctionne pas car il n'y a aucune activité ou fenêtre associée au contexte. Seulement getSystemService(Context.LAYOUT_INFLATER_SERVICE) est donc approprié.