Appel à getLayoutInflater () dans des lieux non actifs

Qu’est-ce qui doit être importé ou comment puis-je appeler le gonfleur Layout dans des endroits autres que l’activité?

public static void method(Context context){ //this doesn't work the getLayoutInflater method could not be found LayoutInflater inflater = getLayoutInflater(); // this also doesn't work LayoutInflater inflater = context.getLayoutInflater(); } 

Je suis capable d’appeler getLayoutInflater uniquement en activité, est-ce une ressortingction? Que se passe-t-il si je veux créer une boîte de dialog personnalisée et que je veux lui donner une vue, ou si je souhaite avoir un message Toast avec une vue personnalisée affichée à partir d’un service, je n’ai que le contexte du service mais je veux afficher un message personnalisé.

J’ai besoin du gonfleur par endroits dans le code qui n’est pas dans la classe d’activité.

Comment puis-je faire ceci ?

Vous pouvez utiliser ces activités extérieures – il vous suffit de fournir un Context :

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

Ensuite, pour récupérer vos différents widgets, vous gonflez une mise en page:

 View view = inflater.inflate( R.layout.myNewInflatedLayout, null ); Button myButton = (Button) view.findViewById( R.id.myButton ); 

EDIT à partir de juillet 2014

La réponse de Davide sur la manière d’obtenir LayoutInflater est en réalité plus correcte que la mienne (ce qui rest valable).

Ou …

 LayoutInflater inflater = LayoutInflater.from(context); 

En utilisant un object de contexte, vous pouvez obtenir LayoutInflater à partir du code suivant

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

ou

View.inflate(context, layout, parent)