Написание элементов объектов на Участки
До сих пор я без проблем перебирал объекты Parcelable
, главным образом потому, что все их члены были типами, у которых есть связанные с ними методы writeX()
. Например, я:
public String name;
private Foo(final Parcel in) {
name = in.readString(); }
public void writeToParcel(final Parcel dest, final int flags) {
dest.writeString(name); }
Но теперь, если у меня есть элементы Bar
, мне становится немного рискованно:
public Bar bar;
private Foo(final Parcel in) {
bar = new Bar(); //or i could actually write some constructor for Bar, this is a demo.
bar.memberString = in.readString();
}
public void writeToParcel(final Parcel dest, final int flags) {
// What do I do here?
}
Я подхожу к этому неправильно? Что мне следует делать в элементе writeToParcel
для отправителя Bar
s?
Ответы
Ответ 1
Правильный и более OO-способ - это сделать Bar также применимым.
Чтобы прочитать Bar в своем частном конструкторе Foo:
private Foo(final Parcel in) {
... ...
bar = in.readParcelable(getClass().getClassLoader());
... ...
}
Чтобы написать Bar в вашем методе writeToParcel:
public void writeToParcel(final Parcel dest, final int flags) {
... ...
dest.writeParcelable(bar, flags);
... ...
}
Надеюсь, что это поможет.
Ответ 2
Приборы являются больными и проходят только по значению, а не по ссылке. Я бы никогда не рекомендовал их использовать. Создайте экземпляр статической модели, если вы используете приложение, и просто получите ссылку на объект, который вам нужен.