我有实现Serializable的类,因为我需要在活动之间传递它:
Day tempDay = new Day();
Intent i = new Intent(this, DayCreator.class);
i.putExtra("DayClass", tempDay);
startActivity(i);
但在Day课程中我需要读取一些字符串:
context.getString(R.string.sick_list);
如果我通过构造函数传递给这个类上下文:
Day tempDay = new Day(context);
启动DayCreator活动时出错:
Parcelable encountered IOException writing serializable object
这会产生场景,因为上下文不可序列化。
那么......我怎样才能从实现Serializable的类中获取字符串?
答案 0 :(得分:1)
不要将上下文传递给POJO
类
一个简单的解决方法是让组件读取String并将其传递给Day
对象。如下组件(活动或服务)。
Day tempDay = new Day();
tempDay.setName((getString(R.string.app_name));
答案 1 :(得分:1)
当你尝试通过bundle发送整个模型对象时......应该是这样的
您的Day
班级改变如此
public class QrCode implements Parcelable {
public static final Creator<QrCode> CREATOR = new Creator<QrCode>() {
@Override
public QrCode createFromParcel(Parcel in) {
return new QrCode(in);
}
@Override
public QrCode[] newArray(int size) {
return new QrCode[size];
}
};
@SerializedName("sno")
private int mSNo;
public QrCode(){
}
public QrCode(Parcel in) {
mSNo = in.readInt();
}
public int getSNo() {
return mSNo;
}
public void setSNo(int SNo) {
mSNo = SNo;
}
@Override
public int describeContents() {
return hashCode();
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeInt(mSNo);
}
}