Android房间:在实体中保存枚举
我试图在Android上的房间数据库中存储枚举值。但是,当从API中提取实体并试图保存到DB时,我得到了一个空指针异常。我已经尝试使用Android房间:在实体中保存枚举,android,kotlin,enums,android-room,Android,Kotlin,Enums,Android Room,我试图在Android上的房间数据库中存储枚举值。但是,当从API中提取实体并试图保存到DB时,我得到了一个空指针异常。我已经尝试使用@Typeconverters注释对数据库类和实体类进行注释 我的实体类如下所示: @Entity @TypeConverters(SalesOrderStatusConverter::class) data class SalesOrder( @PrimaryKey val id: Int, ... var salesOrderStatu
@Typeconverters
注释对数据库类和实体类进行注释
我的实体类如下所示:
@Entity
@TypeConverters(SalesOrderStatusConverter::class)
data class SalesOrder(
@PrimaryKey val id: Int,
...
var salesOrderStatus: SalesOrderStatus,
...
)
使用同一文件中的枚举类和转换器:
enum class SalesOrderStatus(value: Int) {
UNPACKED(0),
PACKED(1),
SHIPPED(2),
EXPORT(3)
}
class SalesOrderStatusConverter {
@TypeConverter
fun toSalesOrderStatus(value: Int): SalesOrderStatus = enumValues<SalesOrderStatus>()[value]
@TypeConverter
fun fromSalesOrderStatus(value: SalesOrderStatus): Int = value.ordinal
}
枚举类SalesOrderStatus(值:Int){
未包装(0),
包装(1),
已装运(2),
出口(3)
}
类SalesOrderStatusConverter{
@类型转换器
fun-toSalesOrderStatus(值:Int):SalesOrderStatus=enumValues()[value]
@类型转换器
fun fromSalesOrderStatus(值:SalesOrderStatus):Int=value.ordinal
}
当我导航到应用程序中的相应片段时,我收到以下错误消息,并且在从API获取数据并尝试保存数据后,应用程序崩溃:
java.lang.NullPointerException:指定为非null的参数为
null:方法kotlin.jvm.internal.Intrinsics.checkNotNullParameter,
参数值
位于com.android.sampleappname.data.model.SalesOrderStatusConverter.fromSalesOrderStatus(未知
资料来源:2)
当我将var-salesforderstatus:salesforderstatus
更改为var-salesforderstatus:Int
时,一切正常
我做错了什么?
@TypeConverters
与RoomDatabase一起使用class@StanislavBondar我也试过同样的问题不幸的是这能回答你的问题吗@不,我也尝试过用TypeConverters注释来注释我的数据库类