我问这个问题:提供字符串,int等等的instread,我们可以在创建新Intent期间推送自定义对象吗?
newActivity.PutExtra("JsonDataResult", business.getJSON());
事实上,由于JSON(来自webrequest)我构建了一个对象,我解析它并将其放在一个对象上。
此时我将从webrequest返回的字符串传递给另一个意图,但解析需要花费很长时间才能完成,因此使用意图传递自定义对象的能力可能非常酷。
编辑:我正在使用monodroid / xamarin,所以
Android.OS.IParcelable无法实现, Java.IO.ISerializable无法实现。
答案 0 :(得分:2)
您可以让自定义类实现Parcelable
(Google表示更快,但您必须执行更多编码)或Serializable
。
然后将您的对象添加到一个包(或“额外”):
Bundle b = new Bundle()
b.putParcelable("myObject",myObject);
b.putSerializable("myObject",myObject);
有关Parcelable
结帐this
如果您对Parcelable
和Serializable
之间的区别感兴趣,请查看this
我个人更喜欢使用Serializable
进行简单的对象传递,因为代码不会被这么多代码所破坏。
编辑:好的不是你的问题与this非常相似吗?
答案 1 :(得分:1)
正如您所指定的那样,您使用的是Monodroid,看起来并不简单。我快速搜索并找到了this forum post
在Monodroid中列出了以下解决此问题的方法:
将自定义对象存储为某个地方的全局变量,并从第二个活动中读取它
这有点麻烦和不好的做法,但会奏效。
或者
将您的类序列化为字符串并将该字符串发送到第二个Activity
这将是一项更艰苦的工作,但更好的做法
答案 2 :(得分:0)
这是一个如何创建Parcelable类的示例:
public class Person implements Parcelable {
private String name;
private String surname;
private String email;
// Get and Set methods
@Override
public int describeContents() {
return hashCode();
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeString(surname);
dest.writeString(email);
}
// We reconstruct the object reading from the Parcel data
public Person(Parcel p) {
name = p.readString();
surname = p.readString();
email = p.readString();
}
public Person() {}
// We need to add a Creator
public static final Parcelable.Creator<person> CREATOR = new Parcelable.Creator<person>() {
@Override
public Person createFromParcel(Parcel parcel) {
return new Person(parcel);
}
@Override
public Person[] newArray(int size) {
return new Person[size];
}
};
如果您想使用Parcelable,请查看here。