проблема:
Сделал 2 компонента
DBComponent
и
NetComponent
в
DBComponent
входят модули
DBModule
и
AppModule
в компонент
NetComponent
входит один модуль
NetModule
Проблема в том что когда я в
DBComponent
добавляю метод
void inject(TopicViewModel topicViewModel)
у меня лезет ошибка,
(error: retrofit2.Call<java.util.List<com.example.testcreator.models.Topic>> cannot be provided without an @Provides- or @Produces-annotated method.)
(прикол в том что ретрофит там никак не связан, он в другом модуле) когда убираю все норм. В чем может быть проблема?
Код ниже:
DBComponent
@Component(modules = {DBModule.class, AppModule.class})
@Singleton
public interface DBComponent {
void inject(App app);
void inject(TopicViewModel topicViewModel);
}
DBModule
@Module
public class DBModule {
@Provides
@Singleton
MyDataBase provideDB(@Named("application_context") Context context){
return Room.databaseBuilder(context,MyDataBase.class,"DBTestCreator").build();
}
}
AppModule
@Module
public class AppModule {
private final Context context;
public AppModule(Context context){
this.context = context;
}
@Named("application_context")
@Provides
Context provideAppContext(){
return context;
}
}
App
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
DaggerDBComponent.builder().appModule(new AppModule(this)).build();
}
}
NetComponent
@Singleton
@Component(modules = {NetModule.class})
public interface NetComponent {
void inject(TopicViewModel topicViewModel);
}
NetModule
@Module
public class NetModule {
private final String BASE_URL="http://site.ru/api/";
@Provides
@Singleton
Retrofit provideRetrofit(){
return new Retrofit
.Builder()
.addConverterFactory(GsonConverterFactory.create())
.baseUrl(BASE_URL)
.build();
}
@Provides
Call<List<Topic>> provideAllTopics(Retrofit retrofit){
return retrofit
.create(JSONSiteApi.class)
.getAllTopics();
}
}
pastebin.com, цуко
ни капли увожения к мобильным клиентам
Обсуждают сегодня