0

我有一个数据模型类 CategoryModel:

@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]]"]

我究竟做错了什么?

4

1 回答 1

0

只需将实现 Serializable 的对象放在 extras 中,例如:

    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, 
            CategoryItemsActivity::class.java)?.apply{
                   putExtra(categoryObjKey, cat as CategoryModel)
            }

           startActivityForResult(categoryItemsIntent,mainActivityReqCode)

    }
于 2021-01-27T02:39:41.817 回答