[英]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.