我正在尝试为我的D&D组编写一个应用程序,其中一项功能是存储组的字符统计信息,并将其显示在该应用程序中。
我去了以下教程和文档,尝试并学习如何做, https://codelabs.developers.google.com/codelabs/android-room-with-a-view-kotlin/#0 https://developer.android.com/training/data-storage/room/defining-data.html https://developer.android.com/guide/topics/data/data-storage 我掌握了基础知识,并在项目中创建了一个新的kotlin文件来定义实体,Dao等,并将代码发布到现在为止,但是我对尝试使其工作陷入僵局。我正在尝试做尽可能少的事情并使它工作,然后将其扩展以存储其他字符统计信息。
stats.kt
package com.taylorworld.tw01
import androidx.lifecycle.LiveData
import androidx.room.*
@entity (tablename = "stat_table")
data class Stats(
@ColumnInfo(name = "stat") val stat: string,
@PrimaryKey val num: Int)
)
@Dao
interface StatDao {
@Query("SELECT stat from stat_table")
fun getStats(): LiveData<<List<Stats>
@Insert
suspend fun insert(stat: Stats)
}
@Abstract val statDao: StatDao{}
当我尝试编译项目时,出现以下错误消息。 https://imagebin.ca/v/4h9cpZurjoA2
答案 0 :(得分:0)
我建议您将实体类和Dao接口移到其他类上。
package com.taylorworld.tw01
import androidx.lifecycle.LiveData
import androidx.room.*
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey
@Entity (tableName = "stat_table")
data class Stats(
@ColumnInfo(name = "stat") val stat: String,
@PrimaryKey val num: Int)
@Dao
interface StatDao {
@Query("SELECT stat from stat_table")
fun getStats(): LiveData<List<Stats>>
@Insert
suspend fun insert(stat: Stats)
@Abstract val statDao: StatDao{}
}
答案 1 :(得分:0)
您是否知道需要RoomDatabase才能访问DAO?它可能看起来像这样:
@Database(
entities = [(Stats::class)],
version = 1,
exportSchema = false
)
abstract class DDDatabase : RoomDatabase() {
abstract fun statDao(): StatDao
private var inst: DDDatabase? = null
private val instLock = Object()
fun getInstance(context: Context): DDDatabase = inst ?: synchronized(instLock) {
return inst ?: run {
inst = Room.databaseBuilder(
context,
DDDatabase::class.java, "name of the database"
).build()
inst!!
}
}
}
但是我使用applicationContext而不是注入上下文。然后,您可以稍后按以下方式使用它:
DDDatabase.getDatabase().statDao().getStats()
但是,我发现您的getStats查询结构不正确。如果您希望数据库中的所有统计信息都应写为:
@Query("SELECT * from stat_table")
fun getStats(): LiveData<List<Stats>>
如果答案适合您,请标记为已批准;否则,请与我联系:)