【发布时间】:2018-04-03 20:01:05
【问题描述】:
我想创建数据并将其写入包裹。我想做以下的原因是调试。我想在一个位置编写一些简洁的代码来启用应用程序中的某个流程。
我想修改此方法以返回我创建的对象:
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 应该保持完全相同,我想通过使用 parcel 构造 MyMessage 对象来填充其messagefield。
我试过这个:
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 有一个空消息。我哪里错了?
【问题讨论】:
-
请显示 MyMessage.CREATOR.createFromParcel() 实现
-
@divideandconquer.se 已编辑问题
标签: android javabeans parcelable parcel