Android将ParseObject发送到另一个活动

时间:2015-12-18 09:11:50

标签: android android-activity serialization parse-platform

我有一个ParseObject,我想发送给另一个活动:

public class HWMMatch extends ParseObject implements Serializable{

    public HWMMatch(){ }

    public ParseUser GetUser1() {
        return (ParseUser)getParseObject("user1");
    }
    public void SetUser1(ParseUser user) {
        put("user1", user);
    }

    public ParseUser GetUser2() {
        return (ParseUser)getParseObject("user2");
    }
    public void SetUser2(ParseUser user) {
        put("user2", user);
    }
}

在MyActivity1.java

Intent myIntent = new Intent(this, MyActivity2.class);
myIntent.putExtra("match", match);
startActivity(myIntent);

// Here match.getParseObject("user1") is defined

但是在我的MyActivity2.java

Intent intent = getIntent();
Serializable s = intent.getExtras().getSerializable("match");
if(s != null)
   this.match = (Match) s;

// Here match.getParseObject("user1") is null

如何将ParseObject从一个活动发送到另一个活动?

谢谢,

2 个答案:

答案 0 :(得分:2)

您可以使用Parcelable。这是一个样本

public class Match extends ParseObject implements Parcelable {
    private int intItem;
    private String stringItem;

    public Match(Parcel in) {
        this.intItem = in.readInt();
        this.stringItem = in.readString();
    }
    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(this.intItem);
        dest.writeString(this.stringItem);
    }

    public static final Creator CREATOR = new Parcelable.Creator() {
        public Match createFromParcel(Parcel in) {
            return new Match(in);
        }

        public Match[] newArray(int size) {
            return new Match[size];
        }
    };
}

只需添加以下内容即可。

        public Match(Parcel in) {
            this.intItem = in.readInt();
            this.stringItem = in.readString();
        }
        @Override
        public int describeContents() {
            return 0;
        }

        @Override
        public void writeToParcel(Parcel dest, int flags) {
            dest.writeInt(this.intItem);
            dest.writeString(this.stringItem);
        }

        public static final Creator CREATOR = new Parcelable.Creator() {
            public Match createFromParcel(Parcel in) {
                return new Match(in);
            }

            public Match[] newArray(int size) {
                return new Match[size];
            }
        };

答案 1 :(得分:0)

使用current version of Parse SDK for Android 1.19.0 ParseObject已经实现了Parcelable,这意味着您可以轻松做到:

当前活动

Intent intent = new Intent(CurrentActivity.this, NextActivity.class);
intent.putExtra("PARSE_OBJECT_EXTRA", parseObject);
startActivity(intent);

下一个活动

ParseObject parseObject = getIntent().getParcelableExtra("PARSE_OBJECT_EXTRA");