2010-03-30 20 views
14

ben gibi basit bir düzen xml varsayalım aşağıdaki:findViewById vs şişirmek

button.xml:

<Button 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/button01" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

aşağıdaki aramalar herhangi bir fark var mıdır? ve hangisini kullanmalıyım?

button = (Button) getLayoutInflater().inflate(R.layout.button, null); 

ve

View v = getLayoutInflater().inflate(R.layout.button, null); 
button = (Button) v.findViewById(R.id.button01); 
+0

Hatalar, kodumu filtreler. Burada: Düğme \t xmlns: android = "http://schemas.android.com/apk/res/android" \t android: id = "@ + id/Button01" \t android: layout_width = "wrap_content" \t android: layout_height = "wrap_content" –

cevap

1

İlk seçenek daha temiz ve biraz daha verimlidir.

Yerleşim düzenleyiciniz bir Button döndürecektir. İlk seçenekle, doğrudan Button erişim kazanırsınız. İkinci seçenekte, düğmeyi View'a indirirsiniz ve ardından, görünümü hiyerarşide aradığınız kimliğe sahip olan görünüm düğmenin olacağı için, gereksiz bir karşılaştırma olan belirli bir kimlik ile görünümü ararsınız. kendisi. Yani ikinci seçenekte, v == button.

13

Bu, verilen düzende 'R.layout.button' 'xml dosyasının' button.xml 'adıyla oluşturulduğu yeni bir görünüm oluşturur. Her aramada .inflate (...) yeni bir örnek alırsınız.

bu bir R.id.button01 id adı ': id = "+ id/Button01" android' tarafından oluşturulan bir düzen içinde var olan bir görünüm üretirken -

View v = getLayoutInflater().inflate(R.layout.button, null); 

. .findViewById (R.id.button01) öğesini her aradığınızda, 'v' görünümü aynı olacağından aynı örneği alırsınız.

button = (Button) v.findViewById(R.id.button01); 
İlgili konular