如何通过的ArrayList 从一个活动到另一个的Android?(How to pass A

2019-10-17 10:24发布

我试图从一个活动发送自定义对象到另一个活动,但是当我调用start活动它的崩溃。

下面是我使用的代码片段。

我的活动实现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);

请让我知道为什么它的崩溃或者我可以用什么替代方法?

Answer 1:

我可以给一个建议。 我这样做,在我的项目。

1.Implement单个类的桥梁来传递对象。 (希望你知道什么是单身,我不这样做,添加评论告诉我。

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.In在从活动,

BridgeClass.instance().cache = Cus_Obje_arraylist;

3.Then中的活动,你可以从桥上类得到它。

ArrayList<CUSTOM_OBJECT> Cus_Obje_arraylist = BridgeClass.instance().cache;


Answer 2:

您需要创建Parcelable对象从一个活动将自定义数组列表到另一个actvity。

然后把它放到使用这个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");

如果你有任何问题,评论它。



文章来源: How to pass ArrayList from one activity to another in Android?