web-dev-qa-db-fra.com

Y a-t-il une différence entre getLayoutInflater () et .getSystemService (Context.LAYOUT_INFLATER_SERVICE)

Une simple réponse "non" me calmera. S'il y a une différence, qu'est-ce que c'est?

32
Lord_JABA

Non

Tant que l'activité ou la fenêtre qui appelle getLayoutInflater() a le même contexte que celui qui appellerait getSystemService(), il n'y a pas de différence.


Preuve Vous pouvez tracer le LayoutInflater retourné par getLayoutInflater() à LayoutInflater.from () et vous pouvez voir ce n'est qu'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;
}
40
Sam

Il y a au moins une situation qui ne

getSystemService (Context.LAYOUT_INFLATER_SERVICE);

doit être utilisé à la place de la contrepartie

getLayoutInflater

Cette situation se trouve dans une classe d'objets arbitraire. Par exemple, j'ai une instance de l'appel de classe objectA. Dans objectA, je veux gonfler une vue sur la vue parent (se produire dans ArrayAdapter qui gonfle la ligne personnalisée dans sa vue de liste.) Dans ce cas, context.getLayoutInflater ne fonctionne pas car aucune activité ou fenêtre n'est associée au contexte. Seul getSystemService (Context.LAYOUT_INFLATER_SERVICE) est alors approprié.

4
Driedshrimp

Voici comment définir un LayoutInflater.

LayoutInflater inflater = (LayoutInflater)context.getSystemService (Context.LAYOUT_INFLATER_SERVICE);

Et getLayoutInflater() donne juste "un accès rapide à l'instance LayoutInflater que la fenêtre a récupérée de son contexte" (à partir de la documentation ) en renvoyant LayoutInflater.

De même, getSystemService(Context.LAYOUT_INFLATER_SERVICE) est utilisé pour récupérer un LayoutInflater pour gonfler les ressources de mise en page dans ce contexte.

Donc, en fait, il y a [~ # ~] pas [~ # ~] différence entre les deux.

Source: Documentation

3
Swayam

NON.

Il n'y a aucune différence.

2
Harshil Pansare