androidserviceandroid-contexttoastlayout-inflater

Call getLayoutInflater() in places not in activity


What does need to be imported or how can I call the Layout inflater in places other than activity?

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();
}

I am able to call getLayoutInflater only in activity, is that an restriction? What if I want to create custom dialog and I want to inflate view for it, or what if I want to have Toast message with custom view that is shown from a service, I only have the context from the service I do not have any activity but I want to show custom message.

I need the inflater in places in the code that isn't in the activity class.

How can I do this ?


Solution

  • You can use this outside activities - all you need is to provide a Context:

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

    Then to retrieve your different widgets, you inflate a layout:

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

    EDIT as of July 2014

    Davide's answer on how to get the LayoutInflater is actually more correct than mine (which is still valid though).