2012-05-27 10 views
9

Bazı öğreticilerden geçtim ve Android Dokümanında, LayoutInflater uygulamasına doğrudan uygulandığında doğrudan erişemeyeceğini söylüyor. google Doc Örnek:LayoutInflater'ı doğrudan çağırmakla arasındaki fark nedir?

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

benim yaşadıklarımı öğretici bu biridir:

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

Yani ne gerçekten anlamıyorum fark bariz farklı kod yanında budur. Herhangi bir açıklama çok takdir edildi. Android Dokümanın takip ettiğimiz kişi olduğunu varsayalım, ancak bir fark yaratıp yaratmadığından emin değilim.

cevap

17

Eğer LayoutInflator.from yöntemi öylesine benziyor görebilirsiniz sorunuzda aynı şeyi yapın. Okuduğunuz öğreticinin tam olarak ne dediğinden emin değil, ancak işlevsellikte bir fark görmüyorum. from yöntemini kullanmak güzel çünkü biraz daha az yazım gerektiriyor, işte bu.

+0

Haha! Vay, teşekkürler! Bu gerçekten yardımcı oldu. Başka bir sorum olurdu ama sen buna cevap verdin. Çok takdir! – Andy

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

Sen O fark sadece kodda olduğunu söyleyebilirim LayoutInflater Class

den static yöntemi kullanan System Manager

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

den LayoutInflater Service Provider alıyorsanız ve bu da çağıran yığını ama sonucu yazma nasıl Aynı - LayoutInflater alırsınız.

/** 
* 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; 
} 

iki kod satırlarını demektir Yani: Android kaynağını açarsanız

Daha this

Saygılar hakkında