【问题标题】:@InstallIn, can only be used with @DefineComponent-annotated classes, but found: [com.abc.xyz.AppClass]@InstallIn,只能和@DefineComponent注解的类一起使用,但是发现:[com.abc.xyz.AppClass]
【发布时间】:2021-08-31 04:39:26
【问题描述】:

根据 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-annotated 类一起使用,但发现:[com.abc.xyz.AppClass]”

【问题讨论】:

    标签: android kotlin mvvm viewmodel dagger-hilt


    【解决方案1】:

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

    @InstallIn(AppClass::class)
    

    有了这个

    @InstallIn(SingletonComponent::class)
    

    它正在工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-21
      • 1970-01-01
      • 2021-08-25
      • 2020-10-05
      • 2015-11-09
      • 2017-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多