0
点赞
收藏
分享

微信扫一扫

Kotlin快速通过Parcelable在intent间传递对象

盖码范 2022-02-27 阅读 93


内容简介

Java代码里要通过Parcelable在intent间传递对象时,Java对象要实现Parcelable,操作起来很麻烦。不过Kotlin里已经有了更好用的方式了。

实现方式

  1. build.gradle添加plugin等
  • 文件头部增加如下内容:
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
  • android节点中增加如下内容:(因为该特性当前属于实验特性)
androidExtensions {
experimental = true
}

Kotlin快速通过Parcelable在intent间传递对象_java

2. 定义数据类User.java:

import android.os.Parcelable
import kotlinx.android.parcel.Parcelize

@Parcelize
class User(var age: Int,var name: String): Parcelable

如果不使用kotlin该实验特性,则需要在数据类中增加Parcel相关代码

import android.os.Parcel
import android.os.Parcelable

class User(var age: Int,var name: String): Parcelable {
constructor(parcel: Parcel) : this(
parcel.readInt(),
parcel.readString()) {
}

override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeInt(age)
parcel.writeString(name)
}

override fun describeContents(): Int {
return 0
}

companion object CREATOR : Parcelable.Creator<User> {
override fun createFromParcel(parcel: Parcel): User {
return User(parcel)
}

override fun newArray(size: Int): Array<User?> {
return arrayOfNulls(size)
}
}
}
  1. 通过intent传递对象:
var intent = Intent(this@MainActivity, SecondActivity::class.java)
val user = User(10, "Andy")
intent.putExtra("extraKey", user)
startActivity(intent)
  1. 通过intent接收对象:
val user = intent.getParcelableExtra<User>("extraKey")
infoTextView.text = user.name

源代码

https://gitee.com/cxyzy1/intentTransDataDemos


举报

相关推荐

0 条评论