Dagger 2注入方法

时间:2015-08-12 09:24:54

标签: android dependency-injection dagger-2

我正在玩Dagger 2

我有以下Module

@Module
public class GameSetupModule {
    @Provides
    @Singleton
    GameSetup provideGameSetup() {
        return new GameSetup();
    }
}

和相应的Component

@Singleton
@Component(modules = {GameSetupModule.class})
public interface GameSetupComponent {
    GameSetup provideGameSetup();

    void inject(SetupActivity activity);

//    void inject(Fragment fragment);

    void inject(SetupCompletedFragment fragment);

    void inject(SelectQuarterLengthFragment fragment);

    void inject(SelectTeamColorsFragment fragment);

    void inject(SelectUserRoleFragment fragment);

}

正如你所看到的,GameSetup将注入几个不同的片段:

@Inject
GameSetup gameSetup; 

onCreate(){
   getGameSetupComponent().inject(this); 
}

如上所述,它实现正常,但是当我只使用单一方法

时注入不起作用
 void inject(Fragment fragment);

表示所有碎片。

我做错了什么或者是否打算更多地控制 GameSetup可能会被注入以及哪些可能无法使用?

1 个答案:

答案 0 :(得分:8)

Dagger2不支持开箱即用的基类注射。

void inject(Fragment fragment);等方法只会在@Inject类中注入Fragment指定的字段,而不是其子类。

根据Reddit上的jackhexen,你在做什么is possible to do with reflection。但反思可以打破Proguard。

我个人会投票给this solution