Вызов 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.
Как я могу это сделать ?
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 из следующего кода
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
Comments