Написать в посылку из кода

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

Я хочу изменить этот метод, чтобы он возвращал созданный мной объект:

public MyMessage getMyMessage() {
        return myMessage;
}

MyMessage - это bean-компонент, определенный как:

@Bean
public class MyMessage implements Parcelable {

    @Optional
    private String message;

    public MyMessage() {
    }

    public MyMessage(Parcel in) {
        message = in.readString();
    }

    public String getMessage() {
        return message;
    }

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

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(message);
    }

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

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

}

Я не хочу редактировать класс MyMessage и добавлять методы конструктора или установщика. MyMessage должен оставаться таким же, и я хочу заполнить его поле message, создав объект MyMessage с участком.

Я пробовал это:

public MyMessage getMyMessage() {
    android.os.Parcel parcel = android.os.Parcel.obtain(); // TODO
    parcel.writeString("message is this");
    return MyMessage.CREATOR.createFromParcel(parcel);
    //return new MyMessage(parcel);
}

Но .writeString(), похоже, не изменяет посылку, отладчик отсоединяется, и я не могу пройти через него. Конечным результатом является то, что bean-компонент MyMessage имеет пустое сообщение. Где я ошибаюсь?


person Adam    schedule 23.10.2017    source источник
comment
Пожалуйста, покажите реализацию MyMessage.CREATOR.createFromParcel ()   -  person activout.se    schedule 23.10.2017
comment
@ diverandconquer.se Отредактированный вопрос   -  person Adam    schedule 24.10.2017


Ответы (1)


Возможный дубликат Запись / чтение посылки не работает в AndroidTestCase -почему?:

Необходимо сбросить положение данных Parcel с помощью: parcel.setDataPosition (0);

person activout.se    schedule 24.10.2017