2017-01-13 83 views
6

listesini enjekte: Ben bir arabirim ve bir sınıf ikisini de kullanarak çalıştıAndroid Açıklamalar - Ben Android Ek Açıklamalar kullanarak aşağıdaki Bahar kodunu elde etmek çalışıyorum üst sınıf tip

@Autowired 
public initHandlerList(List<Handler> handlerList) { 
    // Do stuff with the list ... 
} 

. Listenin kendisi ile açıklamalı olmadığından

Error:(20, 5) error: org.androidannotations.annotations.Bean can only be used on an element annotated with @org.androidannotations.annotations.EBean 

Yani sanırım:

Bean tanımı:

@EBean 
public AbstractHandler implements Handler {} 

enjekte çalışılıyor: daima

@Bean 
public initHandlersList(List<AbstractHandler> handlersList) { 
    // Do stuff with the list ... 
} 

Ama şu hata var @EBean Bean olarak kullanılamaz ... Android Annotati kullanarak bunu uygulamak için herhangi bir şekilde ons?

Teşekkürler!

+0

bu yararlı olabilir https://github.com/androidannotations/androidannotations/wiki/Enhance-custom-classes – Boldbayar

+0

@Boldbayar Teşekkürler ama zaten onların wikilerini okudum, böyle bir şeyi nasıl yapacaklarını göstermiyorlar. Ben onların çerçeve ile mümkün değildir ve ben cevabı için – Nom1fan

cevap

2

Üzgünüz, yorum yapamıyorum ama itibarım çok düşük.

wiki'u okudum ve yöntem tabanlı enjeksiyon altında fasulyeyi nasıl enjekte ettiğinizi gördüm. Kodunuzda görebileceğim şey, gerçekten bir AbstractHandler nesnesine sahip bir EBean oluşturuyor olmanızdır, ancak @EBean ile açıklanmamış bir Liste nesnesi oluşturmaya çalışıyorsunuz demektir, List <> 'ı silebilir ve sadece AbstractHandler'ı kullanabilir veya Liste uygulamasını (ArrayList gibi) genişletebilir ve @EBean ile ek açıklama ekleyebilirsiniz.

@EBean 
public class InjectableArrayList<T> extends ArrayList<T>{} 

Bu yardımcı olur umarım.

+0

Merhaba, bazı boilerplate kodu yazmak zorundayım sanırım. Güzel bir fikirdi, denedim. Ama başardığı şey sadece boş bir dizi listesi enjekte etmektir. İstediğim şey aslında, AbstractHandler'ı genişleten tüm sınıfların örnekleriyle doldurulmuş bir listeyi fiilen enjekte etmektir (Spring'in yaptığı gibi). Görünüşe göre bu çerçeve Bahar kadar güçlü değil. Teşekkürler, teşekkürler. – Nom1fan

+1

Anladım, evet bu, hiçbir element içermeyen bir liste enjekte ediyor. Yorum yaptıkça, bunun gerçekleşip gerçekleşemeyeceğini açıklayan herhangi bir belge göremiyorum. Enjeksiyon belgelerini kontrol ettim ve bu türden bir şey yok gibi görünüyor. Belki de o anda desteklenmiyor. İyi günler. – Nord