[英]Android dagger hilt
我有一個 class NavigationController 需要一個活動實例,我的所有片段都通過這些活動托管。
class NavigationController constructor(private val activity: MainActivity) {
fun navigateToAuth() {
activity.supportFragmentManager
.beginTransaction()
.replace(R.id.main_container,WelcomeFrag())
.commitAllowingStateLoss()
}
}
這是我的 NavigationModule
@InstallIn(ApplicationComponent::class)
@Module
object NavigationModule {
@Provides
fun providesNavigationModule(activity: MainActivity): NavigationController {
return NavigationController(activity)
}
}
但是我收到錯誤,因為無法提供 MainActivity 需要 @Inject 或 @Provides 我知道 dagger 不知道如何創建 MainActivity 因為它沒有構造函數我無法注入它
那么我怎樣才能獲得活動並將其傳遞給我的 NavigationController?
NavigationModule
依賴於Activity
,則您將其安裝在錯誤的component
中。 您應該使用@InstallIn(ActivityComponent::class)
。Activity
scope (=== ActivityComponent
) 中,Hilt 可以提供一個Activity
實例作為依賴項。 它不能提供您的確切MainActivity
的實例。 僅從您的代碼示例中很難判斷這是否可以滿足您的需求,但您可能會簡單地逃脫:@InstallIn(ActivityComponent::class)
@Module
object NavigationModule {
@Provides
fun providesNavigationModule(activity: Activity): NavigationController {
return NavigationController(activity)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.