Компонент Dagger не был добавлен в мою android студию и вызывает ошибки при сборке? - PullRequest
1 голос
/ 12 апреля 2020

Надеюсь, у вас все хорошо, я пытаюсь создать простой CRUD, используя Retrofit, Dagger et c ..

Я создал свой 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 был предложен, это означает, что он известен системе, затем я попытался запустить свой проект, и вдруг он стал красным, мой кинжал больше не известен в моем редакторе.

Я пытаюсь восстановить и перестроить, и, кажется, ничто не решает проблему.

Любая помощь будет высоко ценится, если вы столкнулись с этим раньше.

1 Ответ

1 голос
/ 12 апреля 2020

это нормально, в вашем ApiModule отсутствует метод, возвращающий сервис с аннотациями Provides.

@ Module publi c 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);
  }

  @Provides
  public ContractService provideContractService(){
    return ContractService.getInstance();
  }

 }

Добавьте его и я думаю, что это сработает.

...