【问题标题】:Android Send ParseObject to another activityAndroid 将 ParseObject 发送到另一个活动
【发布时间】:2023-03-08 21:00:01
【问题描述】:

我有一个 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 从一个活动发送到另一个活动?

谢谢,

【问题讨论】:

标签: android android-activity serialization parse-platform


【解决方案1】:

您可以使用 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];
            }
        };

【讨论】:

  • 我已经阅读了有关 Parcelable 的文章,但是在我的 ParseObject 子类中,我没有真正的属性,只有 getter 和 setter .. 我已经更新了我的帖子。
  • 你的 ParseUser 类也应该实现 Parcelable
  • 我真的不明白你编辑的答案,我不知道如何实现 writeToParcel() 和 Match(Parcel in) 方法,因为我不使用任何属性..
  • 你能上传你的 ParseUser 类吗?
  • ParseUser 类是 Parse SDK 的类 (parse.com/docs/android/api/com/parse/ParseUser.html)
【解决方案2】:

随着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");

【讨论】:

    猜你喜欢
    • 2012-08-04
    • 2015-07-20
    • 2014-09-06
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多