作業中アンドロイドアプリケーションを使用するダガー2定義中に依存性注入を行う短剣コンポーネントこのエラーが発生します
Error:(13, 1) error: This @Singleton component cannot depend on scoped components:
@Singleton com.eaxample.app.DaggerAndroid.networkhandler.WebserviceComponent
私のコンポーネントのコードは次のとおりです:
@Singleton
@Component(modules = {WebserviceModule.class}, dependencies = {ApplicationComponent.class})
public interface WebserviceComponent {
WebserviceHelper providesWebserviceHelper();
}
エラーが発生しているコンポーネントのコードは次のとおりです。
@Singleton
@Component(modules = {RemoteDataModule.class}, dependencies = {WebserviceComponent.class})
public interface RemoteDataSourceComponent {
RemoteDataSource providesRemoteDataSource();
}
なぜこのエラーが発生するのでしょうか? また、これを解決するにはどうすればよいですか?
ベストアンサー1
dmitriyzaitsev の回答ではエラーが発生する理由が説明されていますが、解決方法は次のとおりです。
独自のスコープを定義します (実際にはシングルトン スコープのように動作します)。たとえば、次のファイルがあります
RemoteDataScope.java
:@Scope @Retention(RetentionPolicy.RUNTIME) public @interface RemoteDataScope { }
新しいスコープを使用します。たとえば、の
@RemoteDataScope
代わりに を使用します。@Singleton
RemoteDataSourceComponent
@RemoteDataScope @Component(modules = {RemoteDataModule.class}, dependencies = {WebserviceComponent.class}) public interface RemoteDataSourceComponent { RemoteDataSource providesRemoteDataSource(); }