我在玩Dagger2以瞭解它是如何工作的。我剛剛創建了一個「hello dagger2」基本項目,但它崩潰你好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);
}
}
成分,它:
@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 Water provideWater(int quantity){ return new Water(quantity); } – JoCuTo
錯誤:(13,11)錯誤:無法使用Inject構造函數或提供註釋的方法提供java.lang.Integer。 (com.example.llisas.testingdagger2.model.Water water,com.example.llisas.testingdagger2.model.Flour flour) [參數: .testingdagger2.model.Water水] com.example.llisas.testingdagger2.module.BreadModule.provideWater(INT數量) [參數:INT數量] – JoCuTo
只要你的方法有參數(在這種情況下,整數),你會需要繼續提供它們直到提供方法沒有參數。對於整數,你必須添加@Name(「description」)註釋來區分你正在提供的不同類型的整數 – AgileNinja