我正在关注匕首2教程here:
一切正常,但我想创建一个模块,在需要时在构造函数中接受一个活动(或者稍后可能是一个片段)。所以它看起来像:
[FromServices]
但据我所知,这意味着我不能再从应用程序类创建我的组件了,我必须将以下代码移到活动中(并更改组件名称等):
@Module
public class AndroidModule {
private final AppCompatActivity activity;
public AndroidModule(AppCompatActivity act) {
this.activity = act;
}
@Provides @Singleton StringFactory provideStringFactory() {
return new StringFactory(activity);
}
}
所以我的问题是,还有另一种方法吗?因为测试我不知道如何为该活动提供不同的组件,因为创建在其中。在那种情况下,我不明白为什么这比直接在那里构建对象更好。我确信我错过了一些东西。
我试过
@Override public void onCreate() {
super.onCreate();
component = DaggerMyApplication_ApplicationComponent.builder()
.androidModule(new AndroidModule(this))
.commonModule(new CommonModule())
.build();
}
但是这提供了诸如
之类的错误@Module
public class AndroidModule {
@Provides StringFactory provideStringFactory(Activity activity) {
return new StringFactory(activity);
}
}