2

あるクラスから別のクラスにオブジェクトを渡したかったのですが、私のコードは

    private MemberLoginResponse loginResponse;
    .
    .
    Intent intent = new Intent();
    intent = new Intent(context, BillingDeskActivity.class);
    intent.putExtra("privilages", loginResponse);
    startActivity(intent);

データを受信する他のアクティビティでは、このコードを使用します

 Intent i_privilages = getIntent();
 privilages = (MemberLoginResponse) getIntent().getSerializableExtra("privilages");

そして、私は自分のクラスをSerializableに実装したままにしました

arraylist の宣言で ed を打ったクラス

public class MemberLoginResponse implements Parcelable {
public Integer merchantMemberId = 0;
public Integer merchantId = 0;
public String merchantName = "";
public String merchantLogo = "";
public String merchantType = "";
public String merchantHQAddress = "";
public List<CustomSystemPrivilege> merchantPrivileges;
public List<CustomSystemPrivilege> privileges;
public StatusCode statusCode;
public Integer branchId = 0;

public MemberLoginResponse(Parcel in) {
    merchantMemberId = in.readInt();
    merchantId = in.readInt();
    merchantName = in.readString();
    merchantLogo = in.readString();
    merchantType = in.readString();
    merchantHQAddress = in.readString();
    in.readList(merchantPrivileges,
            CustomSystemPrivilege.class.getClassLoader());
    in.readList(privileges, CustomSystemPrivilege.class.getClassLoader());
    branchId = in.readInt();
}

public MemberLoginResponse() {
    // TODO Auto-generated constructor stub
}

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

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

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

@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeInt(merchantMemberId);
    dest.writeInt(merchantId);
    dest.writeString(merchantName);
    dest.writeString(merchantLogo);
    dest.writeString(merchantType);
    dest.writeString(merchantHQAddress);
    dest.writeList(merchantPrivileges);
    dest.writeList(privileges);
    dest.writeInt(branchId);
}

} }

4

3 に答える 3

2

以下は、別の parcelable オブジェクトを parcelable に読み書きするコードです。

class MemberLoginResponse implements Parcelable {
//    
private StatusCode statusCode;
public void writeToParcel(Parcel dest, int flags) {

        dest.writeParcelable(statusCode , flags);

    }
}

あなたがそれを読みたいなら、これを使ってください

 statusCode = (StatusCode)in.readParcelable(A.class.getClassLoader());
于 2013-07-09T08:41:43.460 に答える