Написание элементов объектов на Участки

До сих пор я без проблем перебирал объекты 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

Приборы являются больными и проходят только по значению, а не по ссылке. Я бы никогда не рекомендовал их использовать. Создайте экземпляр статической модели, если вы используете приложение, и просто получите ссылку на объект, который вам нужен.