2011-02-24 27 views
11

isim ve ad etiketleri birisi Android'in XML dosyalarında android:id, android:name ve name etiketleri arasındaki farkı netleştirmek Can. Hepsi bir şeyleri referans göstermenin yolları gibi görünüyor. ÖrneğinFark Android XML dosyaları

, I tanımlanan dizide name alanını kullanarak erişebilir res/values/array.xml dosyasında bir dize dizisi henüz Javadoc "ID" olarak söz etmektedir.

android:id sadece View s'de kullanılmış gibi görünüyor?

Bir şeyi özlüyor muyum yoksa bir etiketin olması daha kolay olmaz mı?

cevap

5

Hayır, hiçbir şey kaçırdığına inanmıyorum. Bu alanlar farklı olarak adlandırılsa da, her ikisinin de kaynakları tanımlamak/referanslamak için kullanıldığına dair benim anlayışım. Bu, özellikle android:id durumunda GUI elemanlarını (görünümleri) ve name durumunda statik kaynakları ifade eder.

Daha fazla derinliğe inmek için, android:id özniteliğinin yalnızca Görünüm'ü genişleten Görünümler ve sınıflara atanmış olduğuna inanıyorum.

Button myButton = (Button) findViewById(R.id.whatever_id_assigned_to_view)

Bu da örneğin name tarafından basitçe tanımlanır böyle strings.xml gibi kaynaklar ya array.xml farklıdır: görünümü programlı kodunuzu findViewById kullanılarak erişilebilir, böylece bu yapılır strings.xml bulunabilir olabilir ne örnek aşağıdadır:

<string name="string_name">Text Resource Here</string>

kullanılarak erişilir ...

getResources().getText(R.string.string_name)

Bunların organizasyonel nedenlerden dolayı ayrıldığını hayal ediyorum. Bu şekilde, oluşturulan Android kaynak dosyası (R.java), R.id'deki görünümler için belirtilen ID'leri, R.string'de bulunan dize kimliklerini, R.array vb. Dizi kimliklerini içerir.

+0

Ürdün için teşekkürler. Sanırım bu benim için bir şeyleri temizledi. Ve android gibi görünüyor: isim 'sadece manifest dosyasında kullanılır. – Tim

+0

'name' 'özelliğinin de başka işlevleri vardır. Örneğin, parçacıklarda, düzeni oluşturmak için sınıfı belirtmek için kullanılır: http://developer.android.com/guide/components/fragments.html –

+0

Bu, "android: tag" alanlarının ATQ'sı değildir. Fragments ile kullanılabilir. Görünüşe göre: id: tercih edilir: [Görüntüle # android: tag] (http://developer.android.com/reference/android/view/View.html#attr_android:tag) – jordanpg