首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@InstallIn只能用于@Module或@EntryPoint类

@InstallIn只能用于@Module或@EntryPoint类
EN

Stack Overflow用户
提问于 2020-12-12 06:17:15
回答 4查看 2.2K关注 0票数 4

我对Android上的依赖注入是个新手。我使用的是Dagger-Hilt,在我为DB提供程序生成的AppModule类中,我得到了一个错误,项目没有编译。

错误是This is my AppModule @InstallIn can only be used on @Module or @EntryPoint classes。我在哪里犯了错?

代码语言:javascript
复制
@Module
@InstallIn(ApplicationComponent::class)
object AppModule {

@Singleton
@Provides
fun provideAppDatabase(
    @ApplicationContext app: Context
) = Room.databaseBuilder(
    app,
    AppDatabase::class.java,
    "gelirkenal"
).build()

@Singleton
@Provides
fun provideItemDao(db: AppDatabase) = db.itemDao()
}
EN

回答 4

Stack Overflow用户

发布于 2021-02-07 19:20:01

我设置了Module的导入,如下所示:

import com.google.android.datatransport.runtime.dagger.Module

但以下内容是正确的:

import dagger.Module

票数 11
EN

Stack Overflow用户

发布于 2021-05-16 00:38:43

ApplicationComponent::class更改为SingletonComponent::class,您还可以通过引用此Hilt Generated Components找到更多hilt生成的组件

代码语言:javascript
复制
@Module
@InstallIn(SingletonComponent::class)
object AppModule {

@Singleton
@Provides
fun provideAppDatabase(
    @ApplicationContext app: Context
) = Room.databaseBuilder(
    app,
    AppDatabase::class.java,
    "gelirkenal"
).build()

@Singleton
@Provides
fun provideItemDao(db: AppDatabase) = db.itemDao()
}
票数 4
EN

Stack Overflow用户

发布于 2021-08-31 19:30:59

更改以下导入:

代码语言:javascript
复制
import com.google.android.datatransport.runtime.dagger.Module
import com.google.android.datatransport.runtime.dagger.Binds

转到=>

代码语言:javascript
复制
import dagger.Module
import dagger.Binds
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65259371

复制
相关文章

相似问题

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