gpt4 book ai didi

android - 如何在包中将数据类作为 Parcelable 传递?

转载 作者:行者123 更新时间:2023-11-29 22:56:20 25 4
gpt4 key购买 nike

我有一个这样的密封类:

sealed class SealedClass {

object Object1 : SealedClass()
object Object2 : SealedClass()
object Object3 : SealedClass()

data class DataClass(val sealedClass: SealedClass, val anotherDataType: AnotherDataType? = null)
}

我想在 Bundle 中传递我的数据类,就像我们通常将值传递给新 fragment 一样:

@JvmStatic
fun newInstance(dataClass: DataClass): Fragment {
val fragment = Fragment()

val args = Bundle(1)
args.putParcelable("DATA_CLASS", dataClass)
fragment.arguments = args

return fragment
}

我不确定该怎么做。到目前为止,我读到的是人们使用 @Parcelize 注释,这是我试图避免的 Kotlin 实验性功能。另一种方法是通过 Parcelable 扩展数据类并实现 Parcelable 方法,但由于我使用自定义类作为 DataClass 中的参数(例如,SealedClass),我不知道如何在 Parcelable 实现中读取/写入这些值。这不是正确的做法吗?

最佳答案

我认为现在使用 Parcelable 的最近 Kotlin 可以更简单:

@Parcelize
data class TimeSeries(
val sourceInfo: SourceInfo? = null,
val variable: Variable? = null,
val values: List<Value_>? = null,
val name: String? = null
) : Parcelable

然后将其传递到您的包中:

val intent = Intent(context, DetailsActivity::class.java).apply {
putExtra(MY_DATA, mydata[position])
}
context.startActivity(intent)

然后通过您的包将其引入:

mydata = intent?.getParcelableExtra<TimeSeries>(MY_DATA)

如果你想传递一个 Bundle你也可以只使用 bundleOf(MY_DATA to mydata[position])当放置 Extra 和 intent?.getBundleExtra(MY_DATA)?.getParcelable<TimeSeries>(MY_DATA) 时得到它时,但看起来像添加了另一层。

关于android - 如何在包中将数据类作为 Parcelable 传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57404594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com