如何与其他活动共享对象?

时间:2012-07-21 16:19:51

标签: android

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

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

TIA

标记

2 个答案:

答案 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