如何通过包从活动A到活动B传递对象列表(任何对象)?

时间:2012-01-13 21:35:22

标签: android

这是在android平台上,我有一个类型对象列表(FitItem),我希望将列表从我的活动A传递到另一个活动B,并且在活动B上我希望再次获取对象列表

5 个答案:

答案 0 :(得分:2)

Intent yourIntent = new Intent(activityA.this, activityB.class);
Bundle yourBundle = new Bundle();
yourBundle.putString("name", value);
yourIntent.putExtras(yourBundle);
startActivity(yourIntent);

您可以在下一个Activity(在onCreate()中)获得价值:

Bundle yourBundle = getIntent().getExtras();
String s = yourBundle.getString("name");

此示例传递String,但您应该能够掌握如何将其用于其他对象。

答案 1 :(得分:1)

对于自定义类: 您必须让FitItem类实现Parcelable

然后在活动A中,从Intent对象,使用putParcelableArrayListExtraFitItem列表传递给活动B,在活动B中,使用getParcelableArrayListExtra检索FitItem

列表

如果要传递String,Integer,Float等列表,请参阅bschultz post

答案 2 :(得分:1)

您必须序列化您的对象。

" Seriawhat"
好的,首先要做的事情是:What is object serialization?

"知道了,但我该怎么做?"
您可以使用Parcelable(更多代码,但更快)或Serializable(更少代码,但更慢)。
Parcelable vs Serializable

"节省一些时间,告诉我代码!"
好的,如果您使用 Parcelable ,请参阅this和/或this

如果您使用可序列化,请参阅this和/或this

希望有所帮助!

答案 3 :(得分:0)

如果对象是可序列化的,那么只需将它们作为额外内容添加到intent中。我想是这样的:

// in Activity A, when starting Activity B
Intent i = new Intent(this, ActivityB.class);
i.putExra("fitItemList", fitItemList);
startActivity(i);

// in Activity B (onCreate)
ArrayList<FitItem> fitItemList = savedInstanceState.getSerializableExtra("fitItemList");

编辑: 就像bschultz已发布的那样:))

答案 4 :(得分:0)

实现在模型类中可序列化。然后,您可以使用包/意图传递模型类。