Nic*_*zzi 2 enums android parcel parcelable kotlin
我需要澄清一下@ParcelizeKotlin 中的注释。我已经声明了这个枚举类:
@Parcelize
enum class Source : Parcelable {
LIST, MAP
}
Run Code Online (Sandbox Code Playgroud)
该类被注释@Parcelize以实现 Parcelable 接口并且它工作正常,但是当我尝试以意图传递 Parceled 类时,我必须强制重新转换为 Parcelable,否则编译器会给我一个“重载解析歧义” . 错误:
重载解析歧义。所有这些功能都匹配。@RecentlyNonNull public open fun putExtra(name: String!, value: Parcelable!): Intent!定义在 android.content.Intent @RecentlyNonNull public open fun putExtra(name: String!, value: Serializable!): Intent! 在 android.content.Intent 中定义
val intent = Intent(context, DestinationActivity::class.java)
intent.putExtra(Constants.RETAIL_DETAILS_CLICK_SOURCE_ID, StoreDetailsClicked.Source
.MAP as Parcelable)
Run Code Online (Sandbox Code Playgroud)
为什么编译器给我这个错误?
kco*_*ock 16
这是因为默认情况下枚举是可序列化的,并且当您添加 Parcelable 时,它会匹配两个方法签名。您可以添加扩展函数来解决歧义:
fun Intent.putParcelableExtra(key: String, value: Parcelable) {
putExtra(key, value)
}
intent.putParcelableExtra(
Constants.RETAIL_DETAILS_CLICK_SOURCE_ID,
StoreDetailsClicked.Source.MAP
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2607 次 |
| 最近记录: |