Dagger,如何创建DAO模块
Dagger, how to create DAO module
我需要一些关于如何使用 ROOM 在应用程序中实现 Dagger 的帮助,我一直在为 DAO 接口创建模块。
dao 模块
@Module
abstract class daoModule {
@Binds
abstract fun provideDao(dao: WordDao): WordDao
}
错误
public abstract com.example.daggerroom.Room.WordDao provideDao(@org.jetbrains.annotations.NotNull()
^C:\Android\DaggerRoom\app\build\tmp\kapt3\stubs\debug\com\example\daggerroom\di\AppComponent.java:6: error:
如果我对此有任何评论,我将不胜感激,因为我已经坚持了一个多星期,我只是不确定如何使用 Room 实现 Dagger。
首先您需要能够提供一个数据库实例,然后您可以从 Db 中获取您的 Dao:
@Module
abstract class DaoModule {
companion object {
@Provides
@Singleton
fun provideDatabase(application: Application): YourDb {
return Room.databaseBuilder(application, YourDb.class, "db").build()
}
@Provides
@Singleton
fun provideWordDao(database: YourDb): WordDao {
return database.getWordDao()
}
}
// Binds methods...
}
我需要一些关于如何使用 ROOM 在应用程序中实现 Dagger 的帮助,我一直在为 DAO 接口创建模块。
dao 模块
@Module
abstract class daoModule {
@Binds
abstract fun provideDao(dao: WordDao): WordDao
}
错误
public abstract com.example.daggerroom.Room.WordDao provideDao(@org.jetbrains.annotations.NotNull()
^C:\Android\DaggerRoom\app\build\tmp\kapt3\stubs\debug\com\example\daggerroom\di\AppComponent.java:6: error:
如果我对此有任何评论,我将不胜感激,因为我已经坚持了一个多星期,我只是不确定如何使用 Room 实现 Dagger。
首先您需要能够提供一个数据库实例,然后您可以从 Db 中获取您的 Dao:
@Module
abstract class DaoModule {
companion object {
@Provides
@Singleton
fun provideDatabase(application: Application): YourDb {
return Room.databaseBuilder(application, YourDb.class, "db").build()
}
@Provides
@Singleton
fun provideWordDao(database: YourDb): WordDao {
return database.getWordDao()
}
}
// Binds methods...
}