1

我想将下面的.tostring转换为数据类如何转换?

InstrumentResponse(AGM=false, AllOrNone=true, Bonus=true, Dividend=true, EGM=false, AuctionDetailInfo=AuctionDetailInfo(AuctionNumber=0, AuctionStatus=0, InitiatorType=0)

我试图通过捆绑从一个片段到另一个片段传递数据类,但bundle.putString如何将其再次转换为数据类?

有没有更好的方法来实现?或如何转换dataClass.toString为数据类?

4

2 回答 2

1

你应该只使用@Parcelize.

添加

androidExtensions {
    experimental = true
}

给你build.gradle

然后将注释添加到您的班级

@Parcelize
data class InstrumentResponse(...)

然后将值直接放入Bundle

bundle.putParcelable(key, instrumentReponse)

要检索值,请调用

val instrumentReponse = bundle.getParcelable<InstrumentResponse>(key)
于 2018-03-29T13:20:09.190 回答
0

要在活动之间传递数据类,请不要使用 toString。相反,使用putParcelable. Parcelable 是 Android 的一种自定义序列化格式。请参阅此处的官方文档(带有示例)。


如果不想深入研究Parcelable实现细节,可以使用 kotlin实验特性

从 Kotlin 1.1.4 开始,Android Extensions 插件提供了Parcelable实现生成器作为实验性功能。

简而言之,添加

androidExtensions {
    experimental = true
}

到您的build.gradle,然后@Parcelize在您的数据类中使用注释并使其继承自Parcelable

import kotlinx.android.parcel.Parcelize

@Parcelize
class InstrumentResponse(...): Parcelable
于 2018-03-29T13:20:27.247 回答