【发布时间】:2015-01-08 12:44:01
【问题描述】:
如何使 Interface 对象 Parcelable?
public interface Options{
public String getAction();
public String getType();
}
public class OptionsInfo implements Parcelable {
private int duration;
private ArrayList<Options> path;
public OptionsInfo(int duration) {
super();
this.duration = duration;
this.path = new ArrayList<Options>();
}
public ArrayList<Options> getPath() {
return path;
}
public void setPath(ArrayList<Options> path) {
this.path = path;
}
public void addToPath(Options object)
{
path.add(object);
}
public int getDuration() {
return duration;
}
public void setDuration(int duration) {
this.duration = duration;
}
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(this.duration);
dest.writeTypedList(this.path);
}
private OptionsInfo (Parcel in){
path = new ArrayList<Options>();
this.duration = in.readInt();
in.readTypedList(this.path, Options.CREATOR);
}
public static final Parcelable.Creator<OptionsInfo> CREATOR = new Parcelable.Creator<OptionsInfo>() {
public OptionsInfo createFromParcel(Parcel in) {
return new OptionsInfo(in);
}
public OptionsInfo[] newArray(int size) {
return new OptionsInfo[size];
}
};
}
【问题讨论】:
-
你没有。接口不包含要打包的数据。如果您的问题是:“如何将我的接口实例持久化到两个或多个活动中?”尽管不鼓励这样做,但您可以通过静态引用来处理它。
-
除了
Options之外,所有path元素都必须实现Parcelable。如果您想强制执行并检查编译时间,请更改为public interface Options extends Parcelable。发布Options的一些具体实现,我可以通过示例发布答案。 -
Parcelable 是数据。数据模型通常不实现接口,因为它们没有行为。
标签: android parcelable