Daggerでプロジェクトを設定しようとしています。今、私はビルドするとき、ダガーのどれ*クラスは、コンポーネントのために生成されている、と私は、次のエラーを取得しています:DaggerはAndroidのDaggerクラスを生成しません
Error:(10, 8) error: [com.redditapp.dagger.RedditAppGraph.inject(com.redditapp.RedditApplication)]
com.redditapp.ui.ActivityHierarchyServer cannot be provided without an @Provides- or @Produces-annotated method.
com.redditapp.ui.ActivityHierarchyServer is injected at
com.redditapp.RedditApplication.activityHierarchyServer
com.redditapp.RedditApplication is injected at
com.redditapp.dagger.RedditAppGraph.inject(app)
と
Error:(13, 10) error: com.redditapp.base.navigation.activity.ActivityScreenSwitcher cannot be provided without an @Inject constructor or from an @Provides-annotated method.
com.redditapp.base.navigation.activity.ActivityScreenSwitcher is injected at
com.redditapp.ui.screens.home.HomePresenter.<init>(screenSwitcher)
com.redditapp.ui.screens.home.HomePresenter is injected at
com.redditapp.ui.screens.home.HomeActivity.presenter
com.redditapp.ui.screens.home.HomeActivity is injected at
com.redditapp.ui.screens.home.HomeComponent.inject(activity)
ここに私の現在の設定です
。アプリケーションレベルのクラスには、使用しています:RedditAppComponentはこのようになります
public void buildComponentAndInject() {
component = RedditAppComponent.Initializer.init(this);
component.inject(this);
}
とDaggerRedditAppComponentが生成されていないため、赤です:
@ApplicationScope
@Component(modules = { RedditAppModule.class, UiModule.class})
public interface RedditAppComponent extends RedditAppGraph {
/**
* An initializer that creates the graph from an application.
*/
final class Initializer {
public static RedditAppComponent init(RedditApplication app) {
return DaggerRedditAppComponent.builder()
.redditAppModule(new RedditAppModule(app))
.uiModule(new UiModule())
.build();
}
private Initializer() {} // No instances.
}
}
親クラスRedditAppGraph付:
public interface RedditAppGraph {
void inject(RedditApplication app);
ViewContainer viewContainer();
ActivityHierarchyServer activityHierarchyServer();
}
throwingしているプロバイダメソッドを含むUIモジュールグラムエラーは次のようになります。
@Module
public class UiModule {
@Provides
@ApplicationScope
ActivityScreenSwitcher provideActivityScreenSwitcher() {
return new ActivityScreenSwitcher();
}
@Provides
@ApplicationScope
@ActivityScreenSwitcherServer
ActivityHierarchyServer provideActivityHierarchyServer(final ActivityScreenSwitcher screenSwitcher) {
return new ActivityHierarchyServer.Empty() {
@Override
public void onActivityStarted(Activity activity) {
screenSwitcher.attach(activity);
}
@Override
public void onActivityStopped(Activity activity) {
screenSwitcher.detach();
}
};
}
}
私はそれがクラスを生成しますかどうかを確認するために、プロジェクトを再構築しようとしました。
コンパイラを適用していますか?あなたは、あなたのビルドグラデルの '' apt '' com.google.dagger:dagger-compiler:2.8 "' 'のようなものを持っていますか? – Fred
私はそうですが、aptの代わりにannotationProcessorを使用しています。 – AggieDev