У меня есть компонент, какDagger 2 не впрыскивать свой объект, но может быть получен из компонента
@GithubListActivityScope
@Component(modules = { GithubListActivityModule.class,GlideActivityModule.class })
public interface GithubListActivityComponent {
GithubUserListAdapter githubUserListAdapter ();
RequestManager requestManager();
LinearLayoutManager linearLayoutManager();
}
И у меня есть модуль вроде этого:
@Module
public class GithubListActivityModule {
private final Activity githubListActivity;
public GithubListActivityModule (Activity activity) {
this.githubListActivity = activity;
}
@Provides
@GithubListActivityScope
Activity activity () {
return this.githubListActivity;
}
@Provides
@GithubListActivityScope
public LinearLayoutManager linearLayoutManager(Activity activity){
return new LinearLayoutManager (activity);
}
}
Проблема: У меня есть трейд в введите LinearLayout manager следующим образом:
@GithubListActivityScope
@Inject
LinearLayoutManager linearLayoutManager;
Хотя мой компонент построен следующим образом:
githubListActivityComponent = DaggerGithubListActivityComponent.builder()
.githubListActivityModule (new GithubListActivityModule (this))
.build();
Мой менеджер линейных макетов не получает экземпляр. Но когда я вручную делаю
linearLayoutManager = githubListActivityComponent.linearLayoutManager();
Он отлично работает. Где я иду не так?
Это означает, что мы определим многие методы интерфейса с разными именами деятельности? – Idee
Если мы не будем работать над этой идеей, тогда да, мы должны вводить все виды деятельности.Но какой-то другой классный парень в Интернете может иметь решение для этого тоже :) – erluxman