问题
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 ?
回答1:
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).
回答2:
Or ...
LayoutInflater inflater = LayoutInflater.from(context);
回答3:
or
View.inflate(context, layout, parent)
回答4:
Using context object you can get LayoutInflater from following code
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
回答5:
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
Use this instead!
回答6:
LayoutInflater.from(context).inflate(R.layout.row_payment_gateway_item, null);
来源:https://stackoverflow.com/questions/7803771/call-to-getlayoutinflater-in-places-not-in-activity