基本Dagger 2活动注射

时间:2016-05-18 12:09:57

标签: android dagger-2

我正在关注匕首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);
    }
}

0 个答案:

没有答案