【问题标题】:How Parcelable view member of object?Parcelable如何查看对象的成员?
【发布时间】:2018-04-09 14:21:39
【问题描述】:

我有一个带有 View 成员的对象。所以我想传递这个对象的 ArrayList,我需要传递这个视图。我知道如何实现 Parcelable。

代码是这样的:

public class Variable implements Parcelable {
    public View mView;
}

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

@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeValue(mView)
}

public static final Parcelable.Creator<Variable> CREATOR
        = new Parcelable.Creator<Variable>() {
    public Variable createFromParcel(Parcel in) {
        return new Variable(in);
    }

    public Variable[] newArray(int size) {
        return new Variable[size];
    }
};

private Variable(Parcel in) {
   mView= (View) in.readValue(getClass().getClassLoader());
}

所以我尝试了 writeToParcel 和 Variable(Parcel in) 方法的对象方法,但显然它不起作用。

我应该怎么做?

【问题讨论】:

  • View 对象不是Parcelable。您只能将 View 的状态保存在 Parcelable 中。

标签: java android object view parcelable


【解决方案1】:

你应该只为数据对象实现parcelable,而不是为视图实现,这个想法是parcel/unparcel数据状态以重新实例化给定的View状态。

您还应该注意,当您打包数据并通过 Intent 发送数据时,事务可以容纳的缓冲区大小有一个硬性限制。所以理想情况下避免通过包裹传输大型内存对象(一个不好的例子是Bitmaps

此外,手动实现 parcelable 非常繁琐,而且容易出错。我建议使用 Studio 的插件或任何好的第三方插件来实现 Parcelable

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    • 2018-03-18
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多