11 Kasım 2009, ÇARŞAMBA
Android: Görünüm.KİMLİK çatışmaları önlemek için nasıl(int ıd) programlı olarak setİD -?
TextViews Program aracılığıyla bir döngü içinde ekliyorum ve Için bir ekleyebilirsiniz.
Nasıl TextView.setId(int id)
kullanabilirim? Ne Tamsayı KİMLİĞİ diğer Kimlikleri ile çatışma değil yani.
CEVAP
15 Mart 2013, Cuma
Google nihayet programlı olarak oluşturulmuş görünümler için benzersiz Kimlikler üretme ihtiyacı fark etti
17 seviye ve üstü API ' diyebilirsin
O zaman kullanın. View.setId(int).
Durumda hedef seviyesi daha düşük 17, burada doğrudan projenizde kullanmak, açıklama sınıfınıza koyabilirsiniz View.java iç uygulama ya da bir yere için ihtiyacınız:
private static final AtomicInteger sNextGeneratedId = new AtomicInteger(1);
/**
* Generate a value suitable for use in {@link #setId(int)}.
* This value will not collide with ID values generated at build time by aapt for R.id.
*
* @return a generated ID value
*/
public static int generateViewId() {
for (;;) {
final int result = sNextGeneratedId.get();
// aapt-generated IDs have the high byte nonzero; clamp to the range under that.
int newValue = result 1;
if (newValue > 0x00FFFFFF) newValue = 1; // Roll over to 1, not 0.
if (sNextGeneratedId.compareAndSet(result, newValue)) {
return result;
}
}
}
KİMLİK numarası 0x00FFFFFF daha büyük statik görüntüleme /res tanımlanan xml dosyalarını ayrılmıştır. (Büyük ihtimalle benim projelerde r.java gelen 0x7f****** .)
Kodunuzda yapabilirsiniz:
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
myView.setId(Utils.generateViewId());
} else {
myView.setId(View.generateViewId());
}
Bunu Paylaş:
Nasıl kamera ışığını açmak programlı o...
Nasıl benim Android app metin programl...
Nasıl android Uygulama programlı olara...
Nasıl bir uygulama simgesi Android pro...
Nasıl programlı olarak Android içinde ...