2011-09-12 22 views
10

Bir düzenlemenin Activity dışı türetilmiş bir sınıftan görünümüne erişmenin herhangi bir yolu var mı? Bir Akordeon sınıfı oluşturuyorum ve bazı etkinliklerin kullanıcı arayüzü öğelerine erişmem gerekiyor. Aktivite bağlamında akordeon sınıfının yapıcısına geçiyorum, ancak findViewById API'si yalnızca Etkinlik sınıfından kullanılabilir. Ayrıca, potansiyel bellek sızıntıları nedeniyle kaşlarını çatlattığından, faaliyetimin bir örneğini geçmek istemiyorum.Bir etkinliğin dışından findViewById() çağrısı

cevap

1

Görünümlerden birinin örneğini sınıfın yapıcısına geçirdim.

2

Etkinliğin içeriği aslında Etkinlik sınıfıdır. Bu nesnenin yalnızca bir Etkinlik içinde yaşayacağını varsayarsak, bunun için Etkinlik türü nesnesini geçirmesi güvenli olmalıdır. Aksi takdirde, Akordeon sınıfınızı yeniden yapılandırmayı düşünün.

2

Yararlı olabilecek bir şey.

Hiç böyle bir şey denemedim. Ayrıca herhangi bir bellek sızıntısı olup olmadığını bilmiyorum. Ama ne istediğini yapar :) "FindViewById() bir aktivite dışında dışarıdan arama"

15

Bir etkinliği yalnızca parametre olarak geçirebildiğinize eminim.

public void initSouthViews(Activity activity) { 
    for (int i = 0; i < southScores_.length; ++i) { 
     southScores_[i] = (EditText) activity.findViewById(10); 
    } 
} 
+0

Haklısınız. İşe yarıyor :) – boctulus

İlgili konular