2014-10-29 26 views
3

我想在我的應用程序中實現Dagger,我有一個實例,我需要在Activity類層次結構中的類中注入一個字段,但此類的子類不需要任何注入成員。層次結構如下所示:可以匕首注入一個抽象的Activity類,而不注入子Activity類嗎?

BaseActivity - > NavigationActivity - > HomePageActivity。

我試圖注入在NavigationActivity一個領域,但我從匕首以下異常:

java.lang.IllegalArgumentException: No inject registered for members/com.quidsi.diapers.activity.HomePageActivity. You must explicitly add it to the 'injects' option in one of your modules. 

我的模塊看起來像這樣

@Module(
    injects = NavigationActivity.class 
) 
public class GestureModule { 

    @Provides 
    GestureInterface provideGestureInterface() { 
     return new MockDrawerGesture(); 
    } 
} 

這是可能的匕首還是需要注入NavigationActivity的每個孩子?

回答

2

匕首1是不可能的。你也必須注入子類別的活動。是的,不幸的是,這意味着您必須將所有這些類添加到GestureMmodule中的注入列表中。

Dagger 2就在眼前,也許事情已經改變了。

+2

Dagger2還需要注入子類,但如果組件接口方法中缺少給定的'void inject(SomethingActivity somethingActivity)',它將引發編譯錯誤而不是運行時錯誤。 – EpicPandaForce 2015-05-31 09:11:13