Dagger 2注入方式
Dagger 2 inject method
我在玩 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 将像这样注入到几个不同的 Fragment 中:
@Inject
GameSetup gameSetup;
onCreate(){
getGameSetupComponent().inject(this);
}
如上所示实现时它工作正常,但当我只使用单一方法时注入不起作用
void inject(Fragment fragment);
对于所有片段。
我是不是做错了什么,或者这甚至是为了更好地控制 GameSetup
可能被注入的地方以及它可能不可用的地方?
Dagger2 不支持基础 class 开箱即用的注入。
void inject(Fragment fragment);
之类的方法只会在 Fragment
class 中注入 @Inject
指定的字段,而不是其子 class es.
根据 Reddit 上的 jackhexen,你在做什么 is possible to do with reflection。但是反射可以破坏 Proguard。
我个人会投票给 this solution。
我在玩 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 将像这样注入到几个不同的 Fragment 中:
@Inject
GameSetup gameSetup;
onCreate(){
getGameSetupComponent().inject(this);
}
如上所示实现时它工作正常,但当我只使用单一方法时注入不起作用
void inject(Fragment fragment);
对于所有片段。
我是不是做错了什么,或者这甚至是为了更好地控制 GameSetup
可能被注入的地方以及它可能不可用的地方?
Dagger2 不支持基础 class 开箱即用的注入。
void inject(Fragment fragment);
之类的方法只会在 Fragment
class 中注入 @Inject
指定的字段,而不是其子 class es.
根据 Reddit 上的 jackhexen,你在做什么 is possible to do with reflection。但是反射可以破坏 Proguard。
我个人会投票给 this solution。