Call to getLayoutInflater() in places not in activity

别说谁变了你拦得住时间么 提交于 2019-11-26 10:07:58

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!