亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Dagger不生成子組件創建方法

Dagger不生成子組件創建方法

翻過高山走不出你 2023-08-09 15:51:46
我使用的是 dagger 2.24,沒有 dagger-android。我的組件設置如下:@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)}發生的情況是 dagger 生成所有子組件創建方法,如下所示:@Overridepublic SignInComponent getSignInComponent() {    return new SignInComponentImpl();}但根本不生成任何實現fun getNewMeetingComponent(): NewMeetingComponent。這確實很奇怪,因為其他子組件之間沒有概念上的差異。構建失敗并顯示一條簡單消息 DaggerAppComponent is not abstract and does not override abstract method getNewMeetingComponent() in AppComponent 
查看完整描述

2 回答

?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

答案很簡單。我把它NewMeetingComponent放入一個名為“new”的包中。我忘記了,就 java 而言,它不是一個有效的包名稱。要么 Android Studio 沒有顯示警告,要么我出于某種原因放棄了它。



查看完整回答
反對 回復 2023-08-09
?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

據我所知,您尚未將子組件添加到主組件中。要添加子組件,您需要在subcomponents主組件內的模塊參數中指定它。文檔中有一個例子

@Module(subcomponents?=?RequestComponent.class)
class?ServerModule?{}

其中SererModule是主要組件中包含的模塊之一。


查看完整回答
反對 回復 2023-08-09
  • 2 回答
  • 0 關注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號