2017-03-08 69 views
0

我有兩個物體像這樣的,我想通過Intent發送實現Parcelable接口:如何包裹處於雙向一對一關係的兩個對象?

class Foo implements Parcelable 
{ 
    private Bar bar; 

    public void writeToParcel(Parcel dest, int flags) 
    { 
     dest.writeParcelable(bar, flags); 
    } 
} 

class Bar implements Parcelable 
{ 
    private Foo foo; 

    public void writeToParcel(Parcel dest, int flags) 
    { 
     dest.writeParcelable(foo, flags); 
    } 
} 

我怎樣才能實現正確的Parcelable接口?

回答

1

我會做這種方式:

FoowriteToParcel亂寫Bar場和Foo實例的所有領域Bar實例的所有字段,而Foo場。

然後在Foo(Parcel in)閱讀BarFoo和使用領域的各個領域創造了Bar實例和兩個對象鏈接在一起。

+0

好的,謝謝,我明白了。如果我有另一個包含'DateTime'字段的對象,我應該使用'writeValue'還是'writeTypedObject'來寫這個字段? – Clyky

+1

如果'DateTime'是'Serializable'或'Parcelable'和'writeTypedObject',只有當'DateTime'是'Parcelable'時,纔可以使用'writeValue'。 – RadekJ