[英]how to parcel Object type in Parcelable class in Java
这个类如何实现可分割的权利。 我不能做包裹对象类型。字符串,双,整数,..变量类型设置为对象类型。
public class MyClass implements Parcelable {
public String Name;
public Object Value; //variables type to set
protected MyClass(Parcel in) {
Name = in.readString();
//Value = in.?
}
public static final Creator<MyClass> CREATOR = new Creator<MyClass>() {
@Override
public MyClass createFromParcel(Parcel in) {
return new MyClass(in);
}
@Override
public MyClass[] newArray(int size) {
return new MyClass[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(Name);
//dest.
}
}
可能我为时已晚,但这可能会帮助其他人寻找相同的东西。
由于 Object 类没有实现 Parcelable,因此需要一种解决方法。 我克服这个障碍的一种方法是使用 GSON 并将序列化和反序列化为字符串和从字符串。
例如:
public class MyClass implements Parcelable {
public String Name;
public Object Value; //variables type to set
protected MyClass(Parcel in) {
Name = in.readString();
Value = new Gson().fromJson(in.readString(), Object.class);
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(Name);
dest.writeString(new Gson().toJson(Value));
}
}
Parcel
文档非常明确地说明了您可以做什么,这里有一些想法。
你有方法writeParcelable
来做到这一点,但你不能打包一个Object
因为Object
没有实现Parcelable
。
您需要定义一个为您的value
实现Parcelable
的class
。
public class MyClass implements Parcelable {
public String name;
public ParcelableValue value; //variables type to set
...
}
public class ParcelableValue implements Parcelable {
...
}
完整的实现见将 Parcelable 的子类写到另一个 Parcel
你也有writeValue
但这仍然有一些条件:
有关完整列表,请参阅该方法的文档
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.