Мое приложение аварийно завершает работу, вводя базу данных комнаты с помощью 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:
@Module
class AppModule(private val app: Application) {
@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()
Приложение добавлено в манифест
class App: Application() {
var component: AppComponent = DaggerAppComponent.builder().appModule(AppModule(this)).build()
fun getAppComponent() = component
}
Инъекция в
class 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