我的程序有一系列不同的课堂活动(基本上不同的屏幕)。在一项活动中,我正在创建多个对象,然后我想在其他活动中访问这些对象。
我如何着手使程序中的其他活动可以访问这些对象,换句话说,我如何与其他活动共享对象?
TIA
标记
我的程序有一系列不同的课堂活动(基本上不同的屏幕)。在一项活动中,我正在创建多个对象,然后我想在其他活动中访问这些对象。
我如何着手使程序中的其他活动可以访问这些对象,换句话说,我如何与其他活动共享对象?
TIA
标记
你需要让那个类实现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();
}
}
您需要解决的第一件事是操作顺序。如果活动 A 是具有共享对象的活动,那么如果活动 B 在没有初始化活动 A 的情况下运行,你会怎么做?请记住,启动活动的意图可能来自任何地方,但说实话,使用 NULL 指针取消引用退出是可以接受的响应。
当需要这样的事情时,我所做的就是不让共享对象成为活动的一部分,而是创建一个特定的对象来包含它们。然后,您可以在对象内存储对该对象的静态引用,并通过静态方法返回它:
public class GlobalParams {
private static reference;
public static GlobalParams getReference()
{
if( reference==NULL )
reference=new GlobalParams();
return reference;
}
}
我认为 parcelable 不会对您有所帮助,因为这会为不同的活动创建不同的副本以供使用。
沙查尔