我正在尝试将自定义对象从一个活动发送到另一个活动,但是当我调用启动活动时它会崩溃。
以下是我使用的代码段。
我的活动实施Serializable
ArrayList<CUSTOM_OBJECT> Cus_Obje_arraylist = new ArrayList<CUSTOM_OBJECT>();
这是我的意图:
Intent inte = new Intent(getApplicationContext(), ListActivity.class); `
inte.putExtra("list",Cus_Obje_arraylist);`
startActivity(inte);
请告诉我为什么会崩溃或我可以使用哪种替代方式?
答案 0 :(得分:7)
我可以提出一个建议。我在我的项目中这样做。
1.实现单例类作为传递对象的桥。 (希望你知道什么是单身人士,我不知道,加上评论告诉我。
class BridgeClass {
private BridgeClass() {}
static BridgeClass obj = nil;
public BridgeClass instance() {
if (obj == nil) obj = new BridgeClass();
return obj;
}
public ArrayList<CUSTOM_OBJECT> cache;
}
2.在from活动中,
BridgeClass.instance().cache = Cus_Obje_arraylist;
3.然后在to活动中,您可以从桥类中获取它。
ArrayList<CUSTOM_OBJECT> Cus_Obje_arraylist = BridgeClass.instance().cache;
答案 1 :(得分:0)
您需要创建Parcelable对象以从一个活动传递自定义数组列表 另一种行为。
然后使用此api将其放入Bundle对象。
putParcelableArrayList(key, value);
getParcelableArrayList(key);
===发件人===
ArrayList<Custom> ar = new ArrayList<Custom>();
Bundle bundle = new Bundle("test");
bundle.putParcelableArrayList("key", ar);
Intent intent = new Intent(this, anotherActivity.class);
intent.putBundle(bundle);
===接收者===
Bundle bundle = getIntent().getBundleExtra("test");
ArrayList<Custom> ar = bundle.getParcelableArrayList("key");
如果您有任何疑问,请发表评论。