1

我的程序有一系列不同的课堂活动(基本上不同的屏幕)。在一项活动中,我正在创建多个对象,然后我想在其他活动中访问这些对象。

我如何着手使程序中的其他活动可以访问这些对象,换句话说,我如何与其他活动共享对象?

TIA

标记

4

2 回答 2

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();
     }
 }
于 2012-07-21T16:25:55.190 回答
1

您需要解决的第一件事是操作顺序。如果活动 A 是具有共享对象的活动,那么如果活动 B 在没有初始化活动 A 的情况下运行,你会怎么做?请记住,启动活动的意图可能来自任何地方,但说实话,使用 NULL 指针取消引用退出是可以接受的响应。

当需要这样的事情时,我所做的就是不让共享对象成为活动的一部分,而是创建一个特定的对象来包含它们。然后,您可以在对象内存储对该对象的静态引用,并通过静态方法返回它:

public class GlobalParams {
    private static reference;

    public static GlobalParams getReference()
    {
        if( reference==NULL )
            reference=new GlobalParams();
        return reference;
    }
}

我认为 parcelable 不会对您有所帮助,因为这会为不同的活动创建不同的副本以供使用。

沙查尔

于 2012-07-21T16:33:26.677 回答