如何在外部对象上实现Parcelable?

时间:2011-05-18 00:54:59

标签: android

我的应用程序使用JAR文件形式的外部库查询服务。当我查询这个服务时,我得到一个对象列表(对象通常使用,而不是对象),它们不以当前形式实现Parcelable。我需要在活动之间发送其中一个对象,所以我假设我需要以某种方式使它们实现Parcelable。但是,如果它们不是我的对象,我不知道如何这样做,我在网上发现的所有教程似乎只处理作者为自己的项目创建的对象。

非常感谢任何帮助。如果我需要澄清一些事情,请告诉我。

2 个答案:

答案 0 :(得分:3)

假设您可以自己实例化对象的新副本,您可以始终使用合成并实现自己的Parcelable数据传输对象来进行传输:

  1. 创建一个新的Parcelable类,我们称之为PObject。
  2. 为PObject添加一个构造函数,该构造函数接收未实现Parcelable的对象的副本。
  3. 在PObject上创建一个方法,该方法返回未实现Parcelable的对象的完全实例化副本。

    您现在应该能够使用PObject实现来传输对象。

  4. Parcelable interface的文档显示了传输整数的基本示例。

    当然,这假设您需要Parcelable:如果活动在同一个过程中,您可以使用全局静态传递它们。它不是最漂亮的,但它通常足够好。

答案 1 :(得分:2)

另一种方法是使用您的Application来存储这些对象。简单的子类Application,使其成为单例并在Manifest.xml中声明它

public class MyApplication extends Application {
    private static final MyApplication instance;

    public static MyApplication getInstace() {
        return instance;
    }

    public void onCreate() {
        instance = this;
    }

    private MyObject myObj;

    public MyObject getMyObject() {
        return this.myObj;
    }

    public void setMyObject(MyObject myObj) {
        this.myObj = myObj;
    }
}

然后你可以存储它:

MyApplication.getInstance().setMyObject(anObject);

恢复它:

MyObject anObject = MyApplication.getInstance().getMyObject();

请记住:

  1. 将MyApplication类声明为Manifest.xml中的Application
  2. 如果您的进程被终止或退出,那么您的数据将不再可用。