gpt4 book ai didi

android - Dagger 2注入(inject)方式

转载 作者:太空宇宙 更新时间:2023-11-03 12:05:43 27 4
gpt4 key购买 nike

我正在玩弄 Dagger 2 .

我有以下模块:

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

和相应的组件:

@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)到几个不同的 fragment 中:

@Inject
GameSetup gameSetup;

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

如上所示实现时它工作正常,但当我只使用一个方法时注入(inject)不起作用

 void inject(Fragment fragment);

对于所有 fragment 。

我是不是做错了什么,或者这甚至是为了更好地控制 在何处 GameSetup 可能被注入(inject)以及在何处可能不可用?

最佳答案

Dagger2 不支持开箱即用的基类注入(inject)。

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

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

我个人会投票给 this solution .

关于android - Dagger 2注入(inject)方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31961094/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com