为了账号安全,请及时绑定邮箱和手机立即绑定

Dagger2 - 跨模块依赖

Dagger2 - 跨模块依赖

30秒到达战场 2021-06-08 21:31:32
我正在尝试使用 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注释。

查看完整回答
反对 回复 2021-06-17
  • 1 回答
  • 0 关注
  • 411 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信