我使用的是 dagger 2.24,沒有 dagger-android。我的組件設(shè)置如下:@Singleton@Component(modules = [ FirebaseModule::class, ViewModelFactoryModule::class, DispatcherModule::class, NetworkModule::class])interface AppComponent { fun getSignInComponent(): SignInComponent fun getMapComponent(): MapComponent // some other subcomponent creation methods fun getNewMeetingComponent(): NewMeetingComponent // THIS method is not implemented by DaggerAppComponent @Component.Factory interface Factory { fun create( @BindsInstance context: Context // some other dependencies ): AppComponent }}/////////////////////////////////////////////////////////////////////@ViewScope@Subcomponent(modules = [NewMeetingModule::class])interface NewMeetingComponent { fun inject(newMeetingActivity: NewMeetingActivity)}發(fā)生的情況是 dagger 生成所有子組件創(chuàng)建方法,如下所示:@Overridepublic SignInComponent getSignInComponent() { return new SignInComponentImpl();}但根本不生成任何實現(xiàn)fun getNewMeetingComponent(): NewMeetingComponent。這確實很奇怪,因為其他子組件之間沒有概念上的差異。構(gòu)建失敗并顯示一條簡單消息 DaggerAppComponent is not abstract and does not override abstract method getNewMeetingComponent() in AppComponent
2 回答

PIPIONE
TA貢獻1829條經(jīng)驗 獲得超9個贊
答案很簡單。我把它NewMeetingComponent
放入一個名為“new”的包中。我忘記了,就 java 而言,它不是一個有效的包名稱。要么 Android Studio 沒有顯示警告,要么我出于某種原因放棄了它。

慕容708150
TA貢獻1831條經(jīng)驗 獲得超4個贊
據(jù)我所知,您尚未將子組件添加到主組件中。要添加子組件,您需要在subcomponents
主組件內(nèi)的模塊參數(shù)中指定它。文檔中有一個例子
@Module(subcomponents?=?RequestComponent.class) class?ServerModule?{}
其中SererModule
是主要組件中包含的模塊之一。
添加回答
舉報
0/150
提交
取消