Как добавить Parcelable Object в Parcelable Object - PullRequest
0 голосов
/ 14 мая 2019

Я должен доставить значение объекта в другое действие, поэтому я нашел способ использовать Parcelable Object.но это проблема

внешний ParcelableOjbect (я назову это "1") имеет внутреннюю переменную ParcelableOjbect (я назову это "2").так что мне нужно сделать, это добавить innerParcelableObject в externalParcelableObject.

«2», который я добавлю, уже настроен на класс Parcelable

, но в появившейся ошибке говорится об этом

writeParcelable(Parcelable, int) in Parcel cannot be applied
to             (State)

Это (1)

ublic class Progress implements Parcelable {
    String time;
    String location;
    State status;                  // <<<----- this is (2)
    String description;

    public Progress(){}
    public Progress(String time, String location, State status, String description) {
        this.time = time;
        this.location = location;
        this.status = status;
        this.description = description;
    }
    protected Progress(Parcel in){
        in.writeString(time);
        in.writeString(location);
        in.writeParcelable(status);   // <<--  the error occured here
        in.writeString(description);
    }

    public static final Creator<Progress> CREATOR = new Creator<Progress>() {
        @Override
        public Progress createFromParcel(Parcel in) {
            return new Progress(in);
        }

        @Override
        public Progress[] newArray(int size) {
            return new Progress[size];
        }
    };

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

    @Override
    public void writeToParcel(Parcel dest, int flags) {

    }

    // ... getters and setters

}

Это (2)

public class State implements Parcelable {

    String id;
    String text;

    public State(String id, String text) {
        this.id = id;
        this.text = text;
    }
    protected State(Parcel in) {
        in.writeString(id);
        in.writeString(text);
    }

    public static final Creator<State> CREATOR = new Creator<State>() {
        @Override
        public State createFromParcel(Parcel in) {
            return new State(in);
        }

        @Override
        public State[] newArray(int size) {
            return new State[size];
        }
    };

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

    @Override
    public void writeToParcel(Parcel dest, int flags) {

    }

    // ... getters and setters
}

Чего не хватает в этом?

1 Ответ

0 голосов
/ 21 мая 2019

Я сам решил эту проблему

Следующая ссылка указывает способ добавления ParcelableObject в ParcelableObject. благодаря этой ссылке https://guides.codepath.com/android/using-parcelable

Это содержимое метода с именем "writeToParcel"

        out.writeString(title);
        out.writeParcelable(from, flags);

Как вы можете видеть, когда вы добавляете Parcelable Object, вы должны передать аргументы "flags".

Затем, когда вы читаете из посылки

        title= in.readString();
        from = in.readParcelable(Person.class.getClassLoader());

Вы можете читать из посылки, чтобы использовать этот способ. И внимание! Вы должны соответствовать их индексу, который вы написали.

Я надеюсь, что это решение поможет другим

...