将类设置为Parcelable



我目前正试图使我的一个类实现Parcelable,但我不能正确地做到这一点。这就是班级

class T(val eyes:Int,val img:ImageButton){
var image = img
var value = eyes
var isPressed = false
}

Android Studio建议我的构造函数在实现Parcelable时应该看起来类似,但我不知道如何使用包来初始化我的ImageButton

constructor(parcel: Parcel) : this(
parcel.readInt(),
//parcel.
) {
value = parcel.readInt()
isPressed = parcel.readByte() != 0.toByte()
}

尝试使用包裹。任何,并将其铸造成ImageButton没有成功,有什么建议如何解决这个问题?提前谢谢。

  1. 如果你想创建一个这样的类,你可以这样创建

    class T(var eyes: Int, var img: ImageButton, var isPressed: Boolean = false)
    
  2. ImageButton类没有实现Parcelable接口,在这种情况下,你不能把它传递给Parcel。这不是一个很好的方法,把视图放入包裹,你可以保存他们的状态到原语或类实现Parcelable和恢复之后。例如,如果你想从EditText传递文本到另一个活动,你可以把这个文本作为String放到Parcel中,并在下一个Activity中恢复它。

如果您正在使用kotlin总是使用数据类模型。并使用@Parcelize注释,这样您就不需要编写额外的样板代码。但在你的情况下,你不能ParcelizeImageButton这不是一个实现Parcelable接口的类

如果你正在寻找一种正常的实现方式,就像这样使用:

@Parcelize
data class UserInformationData(
var userId :  String? = null,
var firstName :  String? = null,
var lastName  :  String? = null,
var email :  String? = null,
var gender :  String? = null,
var dateOfBirth :  String? = null,
var phoneNumber :  String? = null
):Parcelable

最新更新