Y a-t-il une différence entre getLayoutInflater() et.getSystemService (Context.MISE EN PAGE INFLATER SERVICE)

"151900920 un simple" non " me calmera. Si il y a une différence alors ce que c'est?

30
demandé sur Lord_JABA 2012-08-26 21:35:41

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;
}
38
répondu Sam 2012-08-26 18:32:27

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

3
répondu Swayam 2012-08-26 22:29:03

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é.

3
répondu Driedshrimp 2014-08-22 04:19:29

PAS de.

il n'y a aucune différence.

2
répondu Harshil Pansare 2015-03-17 16:44:25