从代码写入 parcelable
Write to parcelable from code
我想创建数据并将数据写入包裹。我想执行以下操作的原因是调试。我想在一个位置编写一些简洁的代码,以启用应用程序中的特定流程。
我想将此方法修改为 return 我创建的对象:
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 class 并添加构造函数或 setter 方法。 MyMessage 应该保持完全相同,我想通过构建一个带有包裹的 MyMessage 对象来填充它的 message
字段。
我试过这个:
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()
似乎没有修改包裹,调试器分离,我无法单步执行它。最终结果是 MyMessage bean 有一个空消息。我哪里错了?
可能与 Parcel write/read doesn't work in AndroidTestCase -why? 重复:
One must reset the Parcel's data position with:
parcel.setDataPosition(0);
我想创建数据并将数据写入包裹。我想执行以下操作的原因是调试。我想在一个位置编写一些简洁的代码,以启用应用程序中的特定流程。
我想将此方法修改为 return 我创建的对象:
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 class 并添加构造函数或 setter 方法。 MyMessage 应该保持完全相同,我想通过构建一个带有包裹的 MyMessage 对象来填充它的 message
字段。
我试过这个:
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()
似乎没有修改包裹,调试器分离,我无法单步执行它。最终结果是 MyMessage bean 有一个空消息。我哪里错了?
可能与 Parcel write/read doesn't work in AndroidTestCase -why? 重复:
One must reset the Parcel's data position with: parcel.setDataPosition(0);