注入会议室数据库时应用程序崩溃

时间:2019-01-03 20:13:43

标签: java kotlin dagger-2 android-room

使用dagger2注入会议室数据库时,我的应用程序崩溃了。当我只注入上下文时,它工作正常。在此示例中,我注入了空间来添加位置,但是我面对的是NPE环境。

  

java.lang.RuntimeException:无法启动活动ComponentInfo {com..roomdb / com..roomdb.mvp.view.MainActivity}:java.lang.NullPointerException:尝试调用虚拟方法'java.lang.Object android .content.Context.getSystemService(java.lang.String)'在空对象引用上

AppModule

@模块 类AppModule(私有val应用程序:应用程序){

@Provides
@Singleton
fun provideContext(): Application = app

@Provides
@Singleton
fun providesAppDatabase(app: Application): AppDatabase =
        Room.databaseBuilder(app , AppDatabase::class.java, "place-db")
                .allowMainThreadQueries().build()

@Provides
fun providesPlaceDao(database: AppDatabase) = database.placeDao()

App已添加到清单 应用类:Application(){

var component: AppComponent = DaggerAppComponent.builder().appModule(AppModule(this)).build()
fun getAppComponent() = component

}

注入

MainActivityModel类:MainActivityContract.Model {

@Inject
lateinit var db: AppDatabase

init {
    App().getAppComponent().inject(this)
}

override fun addPlace(place: Place) {
    db.placeDao().inserPlace(place)
}

}

Logcat

  

原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“ java.lang.Object android.content.Context.getSystemService(java.lang.String)”

Logcat https://i.imgur.com/zjcOzmn.png

0 个答案:

没有答案