我使用bundle将一个项目的ArrayList从一个活动传递到另一个活动。我没有收到任何错误,但是我的第二个活动中没有显示这些项目。我是否正确实现了getSerializable()和putSerializable()?
以下是我的第一个活动
的摘录ListArray已声明
ArrayList<Item> items = new ArrayList<Item>();
将物品放入捆绑包中
Intent ListIntent = new Intent(home.this, SectionListExampleActivity.class);
Bundle loadInfo = new Bundle();
loadInfo.putSerializable("items", items);
ListIntent.putExtras(loadInfo);
第二项活动
Bundle loadInfo = getIntent().getExtras();
items = (ArrayList<Item>) loadInfo.getSerializable("items");
我在两个活动中都实现了Serializable。我确保在第一个活动中填充ArrayList
答案 0 :(得分:1)
什么是Item
..?是可序列化的......如果不是Serializable
答案 1 :(得分:1)
项目类:
public class Item implements Serializable
在第一个活动中:
Intent intent = new Intent(this, Activity2.class);
intent.putExtra("items", items);
startActivity(intent);
在第二项活动(活动2)中:
ArrayList<Item> items = (ArrayList<Item>) getIntent().getExtras()
.getSerializable("items");
答案 2 :(得分:1)
只是猜测:您是否尝试序列化Item(Item [])而不是ArrayList的数组。如果ArrayList是可序列化的,我不是不可能的。
loadInfo.putSerializable("items", items.toArray());
Bundle loadInfo = getIntent().getExtras();
items = (Item[]) loadInfo.getSerializable("items");