Я играю с Dagger2, чтобы понять, как это работает. Я только что создал базовый проект «hello dagger2», но он сбойHello Dagger2 падает на Android Studio
У меня есть три класса: Хлеб, Мука и Вода. Хлеб имеет зависимость от муки и воды.
класс Хлеб:
public class Bread {
private Water water;
private Flour flour;
@Inject
public Bread (Water water, Flour flour){
this.water = water;
this.flour = flour;
}
}
Класс воды:
public class Water {
int waterQuantity;
public Water(int waterQuantity){
this.waterQuantity = waterQuantity;
}
}
класс Мука:
public class Flour {
private int flourQuantity;
public Flour(int flourQuantity){
this.flourQuantity = flourQuantity;
}
}
Как я реализовал модуль и компонент
Модуль:
@Module
public class BreadModule {
@Provides @Singleton
Bread provideBread(Water water, Flour flour){
return new Bread(water, flour);
}
}
Compoment:
@Singleton
@Component (modules = {BreadModule.class})
public interface BreadComponent {
Bread getBread();
}
Ошибка Я облицовкой:
Error:(13, 11) error: com.example.llisas.testingdagger2.model.Water cannot be provided without an @Inject constructor or from an @Provides-annotated method. com.example.llisas.testingdagger2.module.BreadModule.provideBread(com.example.llisas.testingdagger2.model.Water water, com.example.llisas.testingdagger2.model.Flour flour) [parameter: com.example.llisas.testingdagger2.model.Water water]
Что я делаю неправильно?
Спасибо, как метод, созданный, принимающий целое число (количество как параметр) и другая ошибка. Обеспечивает Singleton Вода обеспечивает водоснабжение (количество int) { возвращение новой воды (количество); } – JoCuTo
Ошибка: (13, 11) error: java.lang.Integer не может быть предоставлен без конструктора Inject или из метода Provides-annotated. com.example.llisas.testingdagger2.module.BreadModule.provideBread (com.example.llisas.testingdagger2.model.Water water, com.example.llisas.testingdagger2.model.Flour flour) [параметр: com.example.llisas .testingdagger2.model.Water water] com.example.llisas.testingdagger2.module.BreadModule.provideWater (int quantity) [parameter: int quantity] – JoCuTo
Пока ваши методы имеют параметры (в данном случае целые числа), вы будете необходимо поддерживать их до тех пор, пока метод обеспечения не будет иметь параметров. С целыми числами вы должны добавить аннотацию @Name («description»), чтобы различать разные типы целых чисел, которые вы предоставляете. – AgileNinja