假设我有一个对象的引用,我应该如何将它从一个Activity传递到另一个Activity?
我不想查询Application Object / singletons / static变量。
这还有可能吗?
答案 0 :(得分:10)
您可以在另一个活动中声明一个静态变量,或在Application类中声明一些全局变量,然后从OldActivity将其访问任何活动,就像您要将类型NewType的一些Object解析为Class NewActivity一样。请执行以下操作:
在NewActivity.java中声明一个静态NewType对象。
public static NewObject newObject=null;
在调用NewActivity时执行以下操作。
NewActivity.newObject=item;
Intent intent=new Intent(OldActivity.this, NewActivity.class);
startActivity(intent);
答案 1 :(得分:1)
您可以通过以下方式之一进行操作:
这是来自文档的例子:你可以用parcelable
包裹你的对象,将它附加到一个意图,并在接收活动中“解包”它。
public class MyParcelable implements Parcelable {
private int mData;
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeInt(mData);
}
public static final Parcelable.Creator<MyParcelable> CREATOR
= new Parcelable.Creator<MyParcelable>() {
public MyParcelable createFromParcel(Parcel in) {
return new MyParcelable(in);
}
public MyParcelable[] newArray(int size) {
return new MyParcelable[size];
}
};
private MyParcelable(Parcel in) {
mData = in.readInt();
}
}
答案 2 :(得分:-1)
其中一个解决方案:
您可以创建一个单例类来传递您想要的信息
例如:
StorageManager.getInstance().saveSomething(Object obj);
然后使用相应的getter方法检索
确保您处理同步问题;)