2013-10-16 15 views
11

साथ सामान्य वर्ग इंजेक्शन मैंडैगर

public abstract class BaseActivity<T extends BasePresenter<? extends IBaseView>> implements IBaseView{ 

जो में मैं इस तरह एक सामान्य वर्ग इंजेक्षन करने की कोशिश अपने प्रोजेक्ट में एक सार आधार वर्ग है:

@Inject protected T mPresenter; 

वहाँ चाकू बनाने के लिए कोई तरीका है ऐसे सामान्य इंजेक्शन के साथ काम करते हैं? डैगर कोड उत्पन्न करता है जैसे:

public final class BaseActivity$$InjectAdapter extends Binding<BaseActivity> 
implements MembersInjector<BaseActivity> { 
    private Binding<T> mPresenter; 
} 

और फिर विफल रहता है क्योंकि "टी को किसी प्रकार से हल नहीं किया जा सकता"। क्या इसे

Binding<SomethingExtendingBasePresenter> mPresenter 

ऐसे मामले में बनाने का कोई तरीका है?

+0

आपके प्रकार बहुत विषम हैं। 'गतिविधि' के लिए एक इंटरफ़ेस का विस्तार करने वाला 'गतिविधि' क्यों है? –

+0

गतिविधि बेसव्यू इंटरफ़ेस को कार्यान्वित कर रही है, यह मॉडल-व्यू-प्रेजेंटर पैटर्न से दृश्य है, एंड्रॉइड.व्यू में नहीं देखें। – Malthan

+0

देखें, उस स्थिति में, क्योंकि आपकी गतिविधि एक प्रस्तुतकर्ता है, इसलिए शायद यह एक दृश्य भी नहीं होना चाहिए। –

उत्तर

0

मुझे पता है कि एकमात्र तरीका है जो आपकी जेनेरिक को बढ़ाता है। प्रत्येक प्रकार के लिए आप रुचि रखते हैं।

public class Foo extends BaseActivity<SomethingExtendingBasePresenter> { 
} 

@Inject 
Foo mFoo; 
संबंधित मुद्दे