gpt4 book ai didi

java - Parcelable接口(interface)说明

转载 作者:行者123 更新时间:2023-12-02 12:20:15 25 4
gpt4 key购买 nike

我正在研究接口(interface)Parcelable,并且在尝试完全理解它的工作原理时遇到了一些问题。在互联网上我没有找到一些问题的答案:

我向您展示我的类(class):

public class Media implements IModel, Parcelable{

private Uri uri;
private long _ID;
private boolean isOnDb = false;
private boolean isSelected = false;

/*Getter and setter methods
........
*/


/*********************************** Parcelable **********************************/
public static final Parcelable.Creator CREATOR = new Parcelable.Creator<Media>(){
@Override
public Media createFromParcel(Parcel parcel) {
return new Media(parcel);
}

@Override
public Media[] newArray(int i) {
return new Media[i];
}
};

@Override
public int describeContents() {
return 0;
}

@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeParcelable(uri, 1);
parcel.writeLong(_ID);
parcel.writeByte((byte) (isOnDb ? 1 : 0));
parcel.writeByte((byte) (isSelected ? 1 : 0));
}

private Media (Parcel parcel){
uri = parcel.readParcelable(Uri.class.getClassLoader());
_ID = parcel.readLong();
isOnDb = parcel.readByte() != 0;
isSelected = parcel.readByte() != 0;
}
}

问题 1如您所见,我有一个只有 2 个字段 Media(Uri uri, long _ID) 的构造函数。如果方法 writeToParcel() 和构造函数 private Media (Parcel Parcel) 在其主体内管理 4 个字段,会出现问题吗?我的意思是...由 private Media (Parcel Parcel)writeToParcel() 管理的字段应该反射(reflect)传递给“其他”构造函数的字段数量?

问题 2我应该如何管理 Uri 字段?我的做法正确吗?P.S.:我不明白为什么我不能写 parcel.writeSerialized(Uri);即使 Uriimplements Serialized,我还是收到编译错误。

提前谢谢

最佳答案

Is it a problem if the method writeToParcel() and the constructor private Media (Parcel parcel) menage 4 fields inside their body?

应该没问题。

How should I manage a Uri field? Is it correct the way I did it?

你拥有的应该没问题。就我个人而言,我会将其与字符串相互转换,只是因为我讨厌弄乱类加载器。

I get a compile error even though Uri class implements Serializable.

Uri 未实现Serialized。它实现了Parcelable。请参阅the JavaDocs .

关于java - Parcelable接口(interface)说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45841474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com