问题描述
@Serializable
data class CategoryModel (val name: String,val items: ArrayList<String>) : java.io.Serializable {}
并且我正在尝试使用 Serialize 以便我可以将此类中的数据存储到一个 Bundle 中以便与另一个类共享:
private fun displayCategoryItems(cat: CategoryModel) {
val categoryItemsIntent = Intent(this,CategoryItemsActivity::class.java)
val data: String = Json.encodetoString(cat)
categoryItemsIntent.putExtra(categoryObjKey,data)
startActivityForResult(categoryItemsIntent,mainActivityReqCode)
}
我注意到它已经开始用数组括号做一些奇怪的事情,看起来当我尝试反序列化它时,项目 ArrayList 正在被转换为一个字符串。所以代替
"items": "[1,2]"
我明白
"items":["[1,[2]]"]
我做错了什么?
解决方法
只需将实现 Serializable 的对象放在附加内容中,例如:
private fun displayCategoryItems(cat: CategoryModel) {
val categoryItemsIntent = Intent(this,CategoryItemsActivity::class.java)?.apply{
putExtra(categoryObjKey,data)
}
startActivityForResult(categoryItemsIntent,mainActivityReqCode)
}
或者像这样传递:
private fun displayCategoryItems(cat: Any) {
val categoryItemsIntent = Intent(this,cat as CategoryModel)
}
startActivityForResult(categoryItemsIntent,mainActivityReqCode)
}