希望您做得很好,我正在尝试使用Retrofit,Dagger等来创建简单的CRUD。
我创建了我的ApiComponent:
@Component(modules = {ApiModule.class})
public interface ContractApiComponent {
public void inject(ContractsListViewModel contractListViewModel);
public void inject(ContractService contractService);
}
我多次重建了项目。
我试图在服务中调用Dagger组件,但不建议这样做:
public class ContractService {
public static ContractService instance;
@Inject
public ContractApi api;
public ContractService(){
DaggerContractApiComponent.create().inject(this);
}
}
这是我的ApiModule:
@Module
public class ApiModule {
public static String BASE_URL = "http://localhost/newconceptsphp";
@Provides
public ContractApi provideContractApi(){
return new Retrofit.Builder().baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build()
.create(ContractApi.class);
}
}
[我输入了Dagger,建议输入我的DaggerContractApiCompnent
,这意味着系统已经知道它了,然后我最终尝试运行我的项目,然后突然变成红色,在编辑器中不再知道我的Dagger。
我正在尝试重建和重建,似乎没有什么可以解决问题。
如果您之前遇到过任何帮助,将不胜感激。
正常,您在ApiModule中缺少一个方法,返回带有Provides批注的服务。
@模块公共类ApiModule {
public static String BASE_URL = "http://localhost/newconceptsphp";
@Provides
public ContractApi provideContractApi(){
return new Retrofit.Builder().baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build()
.create(ContractApi.class);
}
@Provides
public ContractService provideContractService(){
return ContractService.getInstance();
}
}
添加它,我认为它会起作用。