来自实现Serializable的类的getString

时间:2017-12-27 12:29:07

标签: android

我有实现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的类中获取字符串?

2 个答案:

答案 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);
    }
}