如何将ArrayList<CustomObject>传递给另一个应用程序中的活动?

3
我想在两个应用之间共享数据...起初我考虑将文件保存到SD卡中,然后读取它...但这种方案行不通...所以我想知道是否有一种方法可以发送实现了ParcelableObjectArrayList
还有其他什么方法可以实现这个目的吗?
注意:这些活动不在同一个应用程序中。
4个回答

8

ArrayList是一个Serializable类,因此只要您的自定义对象也是Serializable,就可以将其放入Intent中。代码如下:

Intent intent = new Intent(YourActivity.this, YourReceiverActivity.class);
intent.putExtra("YourArrayList", new ArrayList<YourSerializableObject>());
startActivity(intent);

然后获取它:

Intent intent = getIntent();
ArrayList<YourSerializableObject> list = 
    (ArrayList<YourSerializableObject>)intent.getSerializableExtra("YourArrayList");

为了使您的对象是Serializable的,所有包含的成员也需要是Serializable的。

3
ArrayList 是可序列化的,而 putExtra 方法接受一个可序列化对象。只要你的 ArrayList 包含可序列化对象,它就会被接受。 - Michael Celey
我认为你应该使用putSerializable(ArrayList<Obj>)而不是putExtra。此外,OP指出他的类实现了parcelable,当然可以使用putParcelableArray()来实现。 - Mazen Elkashef

1
我不确定为什么没有人提到,但你最好的选择绝对是SQLite。与任何对象传递相比,它要高效得多,因为它不会占用任何内存。

1
您可以使用一个静态类(例如称为DataChannel)和一个静态成员,类型为ArrayList ,然后使用静态的get/set方法在活动之间传递对象。

1
静态方法应该是最后的选择。正如@MCeley所指出的那样,有一种好的方法来做到这一点。 - Braj

0

你可以使用以下方式将对象数组作为Intent的额外存储:

public Intent putExtra (String name, Parcelable[] value)

你需要配置你的其他应用程序,以接收你自定义 URI 的 Intent。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接