Dagger组件未在我的android studio中显示,并导致我构建错误?

问题描述 投票:1回答:1

希望您做得很好,我正在尝试使用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。

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

如果您之前遇到过任何帮助,将不胜感激。

android api module dagger
1个回答
1
投票

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

 }

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

© www.soinside.com 2019 - 2024. All rights reserved.