خطأ "Cannot access database on the main thread" في Android Room باستخدام Kotlin
مرحبًا! أنا مبتدئ في تطوير Android باستخدام Kotlin وأستخدم Room للتخزين المحلي للبيانات. كتبت استعلام SELECT بسيط، لكن التطبيق يتعطل مع خطأ: "Cannot access database on the main thread". إليك الكود الخاص بي:
```kotlin
// DAO
@Dao
interface UserDao {
@Query("SELECT * FROM users WHERE id = :userId")
fun getUser(userId: Int): User
}
// Activity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val db = Room.databaseBuilder(
applicationContext,
AppDatabase::class.java,
"my-db"
).build()
val user = db.userDao().getUser(1) // الخطأ هنا!
textView.text = user.name
}
}
```
أفهم أن Room يمنع العمل مع قاعدة البيانات على الخيط الرئيسي، لكن كيف يمكنني الحصول على البيانات بشكل صحيح؟ حاولت استخدام async/await، لكن