我的程序有一系列不同的课堂活动(基本上是不同的屏幕)。在一个活动中,我创建了多个对象,然后我想在其他活动中访问这些对象。
如何让我的程序中的其他活动可以访问这些对象,换句话说,如何与其他活动共享对象?
TIA
标记
答案 0 :(得分:1)
你需要拥有该类实现Parcelable 它基本上类似于Java的可序列化。你必须告诉你的课程如何打包和解压缩自己。然后你可以通过intent.putExtra();
将它放入一个意图中以下是从该链接中获取的代码示例
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();
}
}
答案 1 :(得分:1)
您需要解决的第一件事是操作订单。如果活动A是具有共享对象的活动,那么如果在没有活动A的情况下运行活动B,您会做什么?请记住,开始活动的意图可能来自任何地方,但是,说实话,使用NULL指针取消引用是一种可接受的响应。
当需要这样的事情时,我所做的是不让共享对象成为活动的一部分,而是创建一个包含这些对象的特定对象。然后,您可以在对象内存储对该对象的静态引用,并通过静态方法返回它:
public class GlobalParams {
private static reference;
public static GlobalParams getReference()
{
if( reference==NULL )
reference=new GlobalParams();
return reference;
}
}
我认为parcelable不会对你有所帮助,因为这会为不同的活动创建不同的副本。
Shachar