Таким образом, существует множество учебных пособий, в которых показано, как добавить зависимость в класс действия с помощью 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
Хотя я могу вызывать DaggerTestComponent.create () в подклассе Application, он не будет доступен внутри случайных классов, которые не знают о Application. Так как правильно получить кинжал для инициализации моего поля?