2010-11-11 26 views
6

Şu anda, her bir widget için farklı kimlikler kullanmaya özen gösteriyorum, ancak farklı düzen xml dosyalarındaki bazı widget'lar için aynı kimliği kullanırsam, FindViewById aramalarıma ne olur? Kafası karışır ve yanlış düzen dosyasından bir widget döndürür mü?Farklı düzenlerde birkaç widget için aynı kimliği kullanırsam ne olur?

Bazı diğer görünümlerde bir görünüm (düğmelerle birlikte) dahil etmeyi düşündüğüm için, bu ekran sınıflarının her birinin, dahil edilen görünümdeki her düğmeye biraz daha farklı bir davranış ataması gerektiğinden bahsederim. Ancak bunu yapmak için aynı kimlikte findViewById çağırıyorlardı. Mesela şu anda ben her dosyada böyle yapın:

final ImageButton homeButton = (ImageButton)this.findViewById(R.id.rshome_button); 
homeButton.setOnClickListener(new BottomButtonClickListener()); 

final ImageButton hotButton = (ImageButton)this.findViewById(R.id.rshotlist_button); 
hotButton.setOnClickListener(new BottomButtonClickListener()); 

final ImageButton locButton = (ImageButton)this.findViewById(R.id.rsbot_map); 
locButton.setOnClickListener(new BottomButtonClickListener()); 

final ImageButton sendButton = (ImageButton)this.findViewById(R.id.rssend_button); 
sendButton.setOnClickListener(new BottomButtonClickListener()); 

Ama her ilişkilendirilmemiş düzende widget'ı işaret etmek her dosyada R.id değiştirin. Her bir dosya dosyasını ve her ekran sınıfını ayarlamak zorunda kalmamaları için tek bir R.id'i kullanabilmem iyi olur.

Teşekkür

cevap

3

Bu sürece aynı etkinlikte hem düzenleri örneğini yok gibi ince olmalıdır. Ama asla denemedim bunu garanti etmek istemem. Ancak, R.java dosyanızdaki iki R.id.rshome_button girişini oluşturmaya çalışacağından, Android kod üretecinin hata yapmasına rağmen, şaşırmayacaktım.

+1

Baktığımızın hangisi olduğunu nasıl biliyoruz? – GMsoF

-1

Kendiniz denemenin en iyi yolu.

Ama siz setContentView (R.layout.your_layout); Eğer findViewById çağırırsanız

Yani verilen kimliğe sahip bir widget için aranacaktır your_layout

farklı düzenleri aynı kimliklerini kullanabilirsiniz yüzden

.

+0

R.id.view_id, setContentView() çalıştırılmadan önce derleme zamanında oluşturulan statik bir tamsayıdır. – Chloe

8

Evet, farklı düzenlerde aynı id s'yi kullanabilirsiniz. Aslında, iyi bir uygulama olabilir.

İlgili konular