java - 如何在Java中Parcelable类中打包Object类型

标签 java android object parcelable parcel

该类如何实现可分割的权利。我不能做包裹对象类型。字符串, double ,整数,..变量类型设置为对象类型。

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 并对 String 和 String 进行序列化和反序列化。

例如:

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时,使用GSON将对象(序列化)转换为JSON字符串,并将其作为字符串写入parcel。
  • 在从包中读取包时,将包读取为 String 并再次使用 Gson 将其转换(反序列化)为 Object 类。

关于java - 如何在Java中Parcelable类中打包Object类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47710880/

相关文章:

java - AWS IoT java 客户端中的信任库?

android - 如何使用 ffmpeg 使用 pts gmtime 绘制文本冒号?

javascript - 递归过滤/减少嵌套对象

javascript - 在 JavaScript 中将项目从一个数组交换到另一个数组的优雅方法?

java - 如何按类类型委托(delegate)给服务?

java - 在java中执行除法的正确方法

java - 由于 DocumentFile().fromTreeUri() ,尚不存在的路径上的 DocumentFile.exists() 始终返回 true

java - 按钮> ListView >新 Activity ,有什么建议吗?

安卓工作室 : ExternalSystemException

javascript - 功能不起作用,我不明白为什么