Ошибка при создании базы данных, ошибку я решил, но не могу понять почему она происходит.
llegalStateException: System services not available to Activities before onCreate(), ошибка указывает на класс MyRepository, как только я его удаляю и переношу весь код в MainActivity, все начинает работать правильно.
@Dao
interface MyDao {
@Insert(onConflict = OnConflictStrategy.ABORT)
fun insert(user: User)
}
@Database(entities = [User::class],version = 1,exportSchema = true)
abstract class MyDatabase:RoomDatabase() {
abstract fun getDao(): MyDao
companion object{
private var INSTANCE:MyDatabase?=null
fun getInstance(context: Context):MyDatabase?{
val tempInstance = INSTANCE
return if (tempInstance!=null){
tempInstance
} else{
val database = Room.databaseBuilder(
context,
MyDatabase::class.java,
"db"
).build()
INSTANCE = database
INSTANCE
}
}
}
}
class MyRepository(context: Context) {
private val getMyDao = MyDatabase.getInstance(context)?.getDao()
fun insert(user: User) = getMyDao?.insert(user)
}
class MainActivity : AppCompatActivity() {
val repository = MyRepository(this)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Thread{
val result=repository.insert(User(0,"qwe"))
Log.e("RESULT:",result.toString())
}.start()
}
}