我正在尝试使用 Dagger2 构建一个简单的跨模块依赖项。当我重新构建项目时,所有 DaggerComponents 都会关闭。我有应用程序的通用应用程序依赖注入包:组件 - 一般 DI@Singleton@Component( modules = { MyAppModule.class } )public interface MyAppComponent { void inject( MyApp application );}模块 - 一般 DI@Modulepublic class MyAppModule { private MyApp mMyApp; public MyAppModule( MyApp application ) { mMyApp = application; } @Singleton @Provides public Application provideApplication() { return mMyApp; } @Singleton @Provides public SharedPreferences provideSharedPreferences( MyApp application ) { return PreferenceManager.getDefaultSharedPreferences( application ); } @Singleton @Provides public MyDatabase provideMyDatabase() { return new MyDatabase(); } @Singleton @Provides public MyRepositoryContract provideMyRepository( MyDatabase database, SharedPreferences sharedPreferences ) { return new MyRepository( database, sharedPreferences ); }}我有一个名为 Main 的层需要使用 MyRepository,但是当我尝试执行依赖项时,一切都会下降。组件 - 主 DI(MyApp 依赖)@MainScope@Component( dependencies = { MyAppModule.class }, // <- Contains requested provider modules = { MainModule.class } )public interface MainComponent { void inject( MainActivity view );}模块 - 主 DI(MyApp 依赖)@Module( includes = { MyAppModule.class } ) // <- Contains requested providerpublic class MainModule { private final MainContract.View mView; @MainScope public MainModule( MainContract.View view ) { mView = view; } @MainScope @Provides public MainContract.Model provideModel( MyRepositoryContract repository ) { return new MainModel( repository ); // <- My requested object from MyApp DI package } @MainScope @Provides public MainContract.View provideView() { return mView; }
1 回答
四季花海
TA贡献1811条经验 获得超5个赞
在@Component
注释中已定义MyAppComponent
,所有短命的组件使用@SubComponent
,因为它们建立在更高级别的组件的顶部。发生这种情况是因为文件中有另一个@Component
注释声明MainComponent
,请尝试对该文件使用@Subcomponent
注释。
添加回答
举报
0/150
提交
取消