繁体   English   中英

Android 匕首柄

[英]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?

  1. 如果您的NavigationModule依赖于Activity ,则您将其安装在错误的component中。 您应该使用@InstallIn(ActivityComponent::class)
  2. 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM