无法在我自己的类中调用Intent.putExtra()

时间:2015-08-26 15:36:10

标签: java android

我在ArrayList中有装饰器模式实例。

效果很好,但是当我尝试拨打putExtra()时,它无效 - 我的活动无法启动。

当我发表声明i.putExtra(FRIENDSARRAY, (Serializable)friends);它的作品时,活动开始了。如何使用putExtra()添加它?如何从FriendlistTabHost类中读取它?

List<IComplexListItem> friends = new ArrayList<IComplexListItem>();
JSONArray friendList = answer.getJSONArray("friendlist");

for (int i = 0; i < friendList.length(); i++) {
   ...
   FriendListItem actualFriend = new FriendListItem(i, 15, "name",41242214123);
   ComplexFriendListItem cpItem = new ComplexFriendListItem(actualFriend);
   friends.add(cpItem);
}

Intent i = new Intent();

i.putExtra(FRIENDSARRAY, (Serializable)friends);                     
i.setClass(mContext, FriendlistTabHost.class);
mContext.startActivity(i);

1 个答案:

答案 0 :(得分:0)

我强烈建议您调查parcelable而不是Serializable,因为它在Android上要快得多。首先,你班级的Parcelable

}

然后发送带有意图的列表,请执行以下操作

i.putParcelableArrayList("FriendsArray", friends); 

要在下一个活动中检索它,请执行以下操作

ArrayList<IComplexListItem> friends = (ArrayList<IComplexListItem>) getIntent().getParcelableArrayListExtra("FriendsArray");