Java 使班级成为可包裹的

Java 使班级成为可包裹的,java,android,kotlin,parcelable,parcel,Java,Android,Kotlin,Parcelable,Parcel,我目前正试图使我的一个类实现可打包,但我无法正确地实现它。这是一节课 class T(val eyes:Int,val img:ImageButton){ var image = img var value = eyes var isPressed = false } Android Studio建议,在实现Parcelable时,我的构造函数应该与此类似,但我不知道如何使用包来初始化我的ImageButton co

我目前正试图使我的一个类实现
可打包
,但我无法正确地实现它。这是一节课

    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
,但未成功,您对如何解决此问题有何建议?提前谢谢

  • 如果您想创建这样的类,可以用这种方式创建它

    class T(var eyes: Int, var img: ImageButton, var isPressed: Boolean = false)
    
  • ImageButton类不实现
    Parcelable
    接口,在这种情况下,您无法将其传递到Parcel中。将视图放入Parcelable并不是一种好方法,您可以将它们的状态保存到实现
    Parcelable
    的基本体或类中,然后将其恢复。例如,如果要将文本从
    EditText
    传递到另一个活动,可以将此文本作为
    String
    放入包裹中,并在下一个
    活动中还原它

  • 如果您想创建这样的类,可以用这种方式创建它

    class T(var eyes: Int, var img: ImageButton, var isPressed: Boolean = false)
    
  • ImageButton类不实现
    Parcelable
    接口,在这种情况下,您无法将其传递到Parcel中。将视图放入Parcelable并不是一种好方法,您可以将它们的状态保存到实现
    Parcelable
    的基本体或类中,然后将其恢复。例如,如果要将文本从
    EditText
    传递到另一个活动,可以将此文本作为
    String
    放入包裹中,并在下一个
    活动中还原它


  • 如果您使用的是kotlin,请始终为模型使用数据类。并使用
    @Parcelize
    注释,这样就不需要编写额外的样板代码。但在您的情况下,您不能
    打包
    图像按钮
    它不是一个实现
    打包
    接口的类

    如果您正在搜索一种正常的实现方法,只需这样使用:

    @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
    

    如果您使用的是kotlin,请始终为模型使用数据类。并使用
    @Parcelize
    注释,这样就不需要编写额外的样板代码。但在您的情况下,您不能
    打包
    图像按钮
    它不是一个实现
    打包
    接口的类

    如果您正在搜索一种正常的实现方法,只需这样使用:

    @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
    

    不能将ImageButton(或任何其他视图)作为包裹的一部分。它包含对上下文、资源、其他视图等的引用。此外,如果属性是集合、基本体或其他地块,则只能将其作为地块的一部分。不能将ImageButton(或任何其他视图)作为地块的一部分。它包含对上下文、资源、其他视图等的引用。此外,如果属性是集合、基本体,或其他包裹。有了这些信息,我对设计做了一些更改,以避免将图像传递给此类,然后使类实现包裹接口。有了这些信息,我对设计做了一些更改,以避免将图像传递给此类,然后使类实现包裹接口。