【发布时间】:2021-04-25 05:15:07
【问题描述】:
我有一个使用 ViewModel 类来存储和管理 UI 相关数据的活动。活动中使用的视图模型类具有类似于下面给出的结构:
class SomeViewModel:ViewModel(){
@PrimaryKey(autoGenerate=true)
var id=0
var field1:Array<Double?>=arrayOf(null,null)
var field2:Array<Double?>=arrayOf(null,null)
var field3:Array<Double?>=arrayOf(null,null)
@Ignore
val someFragments=HashMap<String,Fragment>()
@Ignore
val someMap=HashMap<String,Int>()
}
我要做的是在按下返回以关闭活动时将视图模型对象中的数据保存到本地数据库。但问题是当我尝试这样做时出现错误。
无法弄清楚如何将此字段保存到数据库中。您可以考虑为其添加类型转换器。 - androidx.lifecycle.ViewModelerror 中的 mBagOfTags:找不到字段的 getter。 - androidx.lifecycle.ViewModelerror 中的 mBagOfTags:找不到字段的 getter。 - androidx.lifecycle 中的 mCleared
我使用的 TypeConverter 与下面给出的相同:
class Converter{
@TypeConverter
fun fromArrayDouble(field:Array<Double?>):String{
val s=StringBuilder("")
var first=true
for(k in field){
s.append(k.toString())
if(first){
s.append(",")
first=false
}
}
return s.toString()
}
@TypeConverter
fun fromString(str:String):Array<Double?>{
val parts=str.split(',')
val res=ArrayList<Double?>()
for(p in parts){
try{
res.add(p.toDouble())
}catch(e:Exception){
res.add(null)
}
}
return res.toTypedArray()
}
}
还有一个类似的数据库类:
@Database(entities=[SomeViewModel::class], version=1, exportSchema=false)
@TypeConverters(Converter:class)
abstract class SomeDatabase:RoomDatabase(){
// database definition
}
我不明白我哪里出错了。任何帮助将不胜感激。
【问题讨论】:
标签: android kotlin android-room android-viewmodel