android - 我的 android studio 中不建议使用 Dagger 组件并导致我构建错误?
问题描述
希望你做得很好,我正在尝试使用 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 中缺少一个方法,返回带有提供注释的服务。
@Module 公共类 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();
}
}
添加它,我认为它会起作用。
推荐阅读
- r - 如何并行化代码以对 R 中的列表进行排序和求和?
- git - 如何恢复 git 冲突
- javascript - 在 HTML Escape Javascript 字符串之后是否需要“清理”?
- hadoop - 配置单元列检查字符串“null”和真正的 NULL
- python - 从文件名中取出除数字之外的所有内容
- eyeshot - 加入简单的多边形并在 Eyeshot 中绘制生成的轮廓
- python - conda 更新中的语法错误(Anaconda 提示)
- sql - MMDDYY 到 YYYYMMDD SQL
- python-3.x - 熊猫:为什么'in'坏系列?
- azure-devops - Run Cypress.io on Azure Pipelines Hosted Linux Agent