非活动类中的Dagger 2依赖项

时间:2018-09-12 14:28:54

标签: android dagger-2

因此,有许多教程显示了如何使用Dagger 2将依赖项注入到活动类中。但是由于某些原因,似乎从未将依赖项插入不是活动/片段/服务的类中。我想知道如何将依赖项插入普通的类。

现在,我正在尝试将匕首注入到字段中,但是该字段保持为空。我以为错误是我没有告诉匕首进行注射。但是我不确定如何解决这个问题。

@Module
public class TestModule {
    @Provides 
    @Singleton
    String provideTestString() {
        return "test string";
    }
}
@Singleton
@Component(modules = { TestModule.class })
public interface TestComponent {
    void inject(TestClass testClass);
    String getTestString();
}
class TestClass {
    @Inject
    String testString;

    public boolean isTestStringNull() {
        return testString == null;
    }
}
Log.d("---", "is test string null: " + new TestClass().isTestStringNull());//is true

虽然我可以在Application的子类中调用DaggerTestComponent.create(),但在不了解Application的随机类中将无法使用它。那么用匕首初始化我的字段的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

class TestClass {
    @Inject
    String testString;

    @Inject
    TestClass() {}
}

@Singleton
@Component(modules = { TestModule.class })
public interface TestComponent {
    TestClass testClass();

    String testString();
}

Log.d("---", "is test string null: " + component.testClass().isTestStringNull());//is false

答案 1 :(得分:1)

每个应用程序都有一个入口。因此,可以使用一些顶级类代替Application。这种方法类似于带有Activity的方法,甚至更简单,因为您可以将所需的类传递给构造函数。