Вызов getLayoutInflater() в местах, не находящихся в активности



что нужно импортировать или как я могу вызвать макет inflater в местах, отличных от деятельности?



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


Я могу назвать getLayoutInflater только в деятельности, это ограничение? Что делать, если я хочу создать пользовательский диалог, и я хочу раздуть представление для него, или что если я хочу иметь всплывающее сообщение с пользовательским представлением, которое отображается из службы, у меня есть только контекст из службы, у меня нет никакой активности, но я хочу показать пользовательское сообщение.



мне нужны inflater в местах в коде, который не находится в классе activity.



Как я могу это сделать ?

835   4  

4 ответов:

вы можете использовать это внешняя деятельность - все что вам нужно это предоставить Context:

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

затем, чтобы получить различные виджеты, вы раздуваете макет:

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

редактировать по состоянию на июль 2014 года

Давиде!--14-->ответ о том, как получить LayoutInflater на самом деле более правильно, чем мой (который все еще действителен, хотя).

или ...

LayoutInflater inflater = LayoutInflater.from(context);

используя объект контекста, вы можете получить LayoutInflater из следующего кода

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

или

View.inflate(context, layout, parent)

Comments

    Ничего не найдено.