我有一个类NavigationController,它需要一个Activity示例,我的所有片段都通过这些Activity托管。
class NavigationController constructor(private val activity: MainActivity) {
fun navigateToAuth() {
activity.supportFragmentManager
.beginTransaction()
.replace(R.id.main_container,WelcomeFrag())
.commitAllowingStateLoss()
}
}
这是我的导航模块
@InstallIn(ApplicationComponent::class)
@Module
object NavigationModule {
@Provides
fun providesNavigationModule(activity: MainActivity): NavigationController {
return NavigationController(activity)
}
}
但我收到错误,因为无法提供MainActivity,需要@Inject或@Provides。我知道dagger不知道如何创建MainActivity,因为它没有构造函数,我无法注入它
那么,我如何获取活动并将其传递给我的NavigationController呢?
2条答案
按热度按时间2izufjch1#
1.如果您的
NavigationModule
依赖于Activity
,则您将其安装在错误的component
中。您应该使用@InstallIn(ActivityComponent::class)
。1.在
Activity
作用域(===ActivityComponent
)中,Hilt可以提供Activity
的示例作为依赖项。它不能提供确切的MainActivity
的示例。仅从代码示例很难判断这是否能满足您的需要,但您可能只需:velaa5lx2#
我们有7个简单的步骤来实现匕首柄在Android中.
**第1步:**创建一个项目,并为其给予任意名称。Create a new project
**第2步:**创建项目后,设置依赖项工作。没有Android依赖项,我们无法在Android应用程序中实现或运行刀柄。
让我们看看know more 5 step to implementing dagger hilt in Android的链接。