美文网首页Android开发经验谈安卓开发安卓开发
Kotlin快速通过Parcelable在intent间传递对象

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

作者: 蓝不蓝编程 | 来源:发表于2019-02-21 17:51 被阅读4次

    内容简介

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

    实现方式

    1. build.gradle添加plugin等
    • 文件头部增加如下内容:
    apply plugin: 'kotlin-android'
    apply plugin: 'kotlin-android-extensions'
    
    • android节点中增加如下内容:(因为该特性当前属于实验特性)
    androidExtensions {
            experimental = true
        }
    
    1. 定义数据类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://www.jianshu.com/p/442339952f26

    相关文章

      网友评论

        本文标题:Kotlin快速通过Parcelable在intent间传递对象

        本文链接:https://www.haomeiwen.com/subject/rpsdyqtx.html