2012-05-27 3 views
9

Я прошел несколько учебных пособий, и в Android Doc он говорит, что не следует напрямую обращаться к LayoutInflater при создании экземпляра. Пример из документа Google:В чем разница между вызовом LayoutInflater напрямую и нет?

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

В учебнике я прошел через это один:

LayoutInflater inflater = LayoutInflater.from(parent.getContext()); 

Так что я не понимаю, в чем разница, кроме очевидной другой код. Любое объяснение очень ценится. Я предполагаю, что Android Doc должен быть тем, за которым мы следуем, но я не уверен, что это имеет значение.

ответ

17

Если вы откроете для Android источник, который вы можете видеть, что метод LayoutInflator.from выглядит так:

/** 
* Obtains the LayoutInflater from the given context. 
*/ 
public static LayoutInflater from(Context context) { 
    LayoutInflater LayoutInflater = 
      (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    if (LayoutInflater == null) { 
     throw new AssertionError("LayoutInflater not found."); 
    } 
    return LayoutInflater; 
} 

Это означает, что две строки кода в вашем вопросе делайте то же самое. Не знаете, что именно вы читаете в учебнике, но я не вижу разницы в функциональности. Использование метода from является хорошим, поскольку для этого требуется немного меньше печатать, вот и все.

+0

Ха-ха! Вау, спасибо! Это действительно помогло. У меня был бы другой вопрос, но вы даже ответили на него. Очень признателен! – Andy

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

Вы получаете LayoutInflater Service Provider от System Manager

LayoutInflater inflater = LayoutInflater.from(parent.getContext()); 

Вы используете static метод из LayoutInflater Class

Я бы сказал, что разница только в коде и как вы пишете это приложение, также вызывая стек, но результат то же самое - вы получите LayoutInflater.

Подробнее о this

С уважением

Смежные вопросы