首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@InstallIn,只能与@DefineComponent注释的类一起使用,但发现:[com.abc.xyz.AppClass]

@InstallIn,只能与@DefineComponent注释的类一起使用,但发现:[com.abc.xyz.AppClass]
EN

Stack Overflow用户
提问于 2021-06-15 18:18:03
回答 1查看 570关注 0票数 1

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

将类路径添加到项目模块

代码语言:javascript
复制
classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version"

添加插件

代码语言:javascript
复制
plugins {
    id "kotlin-kapt"
    id("dagger.hilt.android.plugin")
}

添加依赖项

代码语言:javascript
复制
dependencies {
    implementation("com.google.dagger:hilt-android:$hilt_version")
    kapt("com.google.dagger:hilt-android-compiler:$hilt_version")
}

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

创建的模块为

代码语言:javascript
复制
@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类中注入为

代码语言:javascript
复制
@HiltViewModel
class DownloadViewModel @Inject constructor(
    private val mediaDao: MediaDao
): ViewModel() {
    ...
}

但在执行完所有步骤后,我收到错误消息"@InstallIn,只能与@DefineComponent注释的类一起使用,但发现: com.abc.xyz.AppClass“

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-15 18:18:03

按照Codelab中的定义,我替换了这个

代码语言:javascript
复制
@InstallIn(AppClass::class)

有了这个

代码语言:javascript
复制
@InstallIn(SingletonComponent::class)

而且它起作用了。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67984384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档