Я только начал работать с кинжалом 2. Я создал график зависимостей для зависимости уровня приложения. Теперь, когда я хотел создать зависимость, которая требуется для определенного действия, поэтому я создал еще один Component
для активности, тогда я создал модуль и область действия для этого компонента. Теперь, когда я закончил писать весь код, я строю проект, но я получаю ошибку компилятора, которую я не могу решить.Кинжал 2, Как добавить интерфейс в зависимость
Вот что я делаю.
@FeedsCatalogActivityScope
@Component(modules = FeedsCatalogActivityModule.class, dependencies = FeederApplicationComponent.class)
//My activity requires Catalog adapter so i am creating dependency for that
public interface FeedsCatalogActivityComponent {
CatalogAdapter getCatalogAdapter();
}
Вот модуль
@Module
public class FeedsCatalogActivityModule {
private final SelectedInterfaceListener selectedInterfaceListener;
public FeedsCatalogActivityModule(SelectedInterfaceListener selectedInterfaceListener) {
this.selectedInterfaceListener = selectedInterfaceListener;
}
@Provides
@FeedsCatalogActivityScope
public CatalogAdapter catalogAdapter(Picasso picasso, SelectedInterfaceListener mSelectesInterfaceListener) {
return new CatalogAdapter(picasso, mSelectesInterfaceListener);
}
}
Здесь сфера
@Scope
public @interface FeedsCatalogActivityScope {
}
Так что теперь, когда я построить я получаю эту ошибку
/Users/Zeeshan/Desktop/personal/Feeder/app/src/main/java/io/droidninja/feeder/FeederApplication.java Error:(10, 31) error: cannot find symbol class DaggerFeederApplicationComponent /Users/Zeeshan/Desktop/personal/Feeder/app/src/main/java/io/droidninja/feeder/ui/activities/FeedsCatalogActivityComponent.java Error:(13, 20) error: io.droidninja.feeder.ui.adapters.SelectedInterfaceListener cannot be provided without an @Provides-annotated method. io.droidninja.feeder.ui.adapters.SelectedInterfaceListener is injected at io.droidninja.feeder.ui.activities.FeedsCatalogActivityModule.catalogAdapter(…, mSelectesInterfaceListener) io.droidninja.feeder.ui.adapters.CatalogAdapter is provided at io.droidninja.feeder.ui.activities.FeedsCatalogActivityComponent.getCatalogAdapter() Error:Execution failed for task ':app:compileDebugJavaWithJavac'. Compilation failed; see the compiler error output for details.
Что я понимаю это что у меня проблема в FeedsCatalogActivityModule
. Как я могу предоставить SelectedInterfaceListener
? Это интерфейс.
P.S Я новичок в dagger2, я только начинаю с этого.
Деятельность, реализует этот интерфейс. Что я должен делать в этом случае? –
https://guides.codepath.com/android/Dependency-Injection-with-Dagger-2#dependent-components-vs-subcomponents – TmTron
@ ZeeshanShabbir интересно, почему вы хотели бы, чтобы это было реализовано Activity, так или иначе, ответьте и передайте 'this' как ссылку в конструкторе модуля при построении компонента. – Distjoy