@InstallIn,只能与@DefineComponent注释类一起使用,但可以找到:[com.abc.xyz.App



根据Hilt的文档,我完成了的所有步骤

将类路径添加到项目模块

classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version"

添加插件

plugins {
id "kotlin-kapt"
id("dagger.hilt.android.plugin")
}

添加依赖项

dependencies {
implementation("com.google.dagger:hilt-android:$hilt_version")
kapt("com.google.dagger:hilt-android-compiler:$hilt_version")
}

带注释的应用程序类,在我的例子中是AppClass,带有@HiltAndroidApp。带注释的活动和关于具有@AndroidEntryPoint的片段。

创建模块作为

@InstallIn(AppClass::class)
@Module
object DatabaseModule {
@Provides
@Singleton
fun provideAppDB(application: Application): AppDB {
return AppDB.getDatabase(application)
}
@Provides
@Singleton
fun provideMediaDao(appDB: AppDB): MediaDao {
return appDB.downloadMediaDao()
}
}

将其作为注入ViewModel类

@HiltViewModel
class DownloadViewModel @Inject constructor(
private val mediaDao: MediaDao
): ViewModel() {
...
}

但是,在遵循了所有步骤之后,我得到了一个错误:@InstallIn,只能与@DefineComponent注释类一起使用,但可以找到:[com.abc.xyz.AppClass]">

根据Codelab中的定义,我替换了这个

@InstallIn(AppClass::class)

用这个

@InstallIn(SingletonComponent::class)

它正在发挥作用。

在我的情况下,我犯了一个职业生涯结束错误,我花了一整天的时间在一个简单的打字错误上,受到了应有的惩罚!

我没有使用SingletonComponent::class,而是将其拼写为Singleton::class

//worst error of my career
@Module
@InstallIn(Singleton::class)
object AppModule { ... }

我改为SingletonComponent::类并绕过了错误。

//changed it to this
@Module
@InstallIn(SingletonComponent::class)
object AppModule { ... }

相关内容

  • 没有找到相关文章

最新更新