@gikengik

Как исправить проблему с Dagger2?

Использую библиотеку Dagger2, при попытке сделать rebuild компилятор выдаёт ошибку
"error: Members injection methods may only return the injected type or void." (в методе getRetrofit интерфейса NetworkComponent)
Вроде бы в модуле ModuleNetwork я делаю класс Retrofit injected, но ошибка не исчезает.
Что мне делать?
@Module
public class NetworkModule {
    private static final String BASE_URL = "https://api.coingecko.com/";
    @Provides
     public static Gson provideGson() {
        return new GsonBuilder()
                .setLenient()
                .create();
    }
    @Provides
    public Retrofit provideRetrofit(Gson gson) {
        return new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create(gson))
                .build();
    }
}


@Component (modules = NetworkModule.class)
public interface NetworkComponent {
    Retrofit getRetrofit(Gson gson);
}
  • Вопрос задан
  • 161 просмотр
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Ты немного неправильно понимаешь смысл методов в компоненте. Это провижн-методы, или геттеры, они только возвращают что-то, но не принимают. Убери оттуда гсон, и всё починится. Но вангую, это не то, что ты хочешь сделать. Этот ретрофит ты явно хочешь куда-то заинжектить, а не просто достать из компонента.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы