首页 > 解决方案 > 我的 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 在我的编辑器中不再被识别。

我正在尝试重建和重建,似乎没有任何问题可以解决问题。

如果您以前遇到过这种情况,任何帮助将不胜感激。

标签: androidapimoduledagger

解决方案


这是正常的,您在 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();
  }

 }

添加它,我认为它会起作用。


推荐阅读