1

あるアクティビティから別のアクティビティにカスタムオブジェクトを送信しようとしていますが、開始アクティビティを呼び出すとクラッシュします。

以下は私が使用したスニペットです。

私のアクティビティは実装します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);

クラッシュする理由や、別の方法を教えてください。

4

2 に答える 2

7

I can give a suggestion. I do this in my project.

1.Implement a singleton class as the bridge to pass object. (Hopefully you know what's singleton, I you don't, add comment to tell me.

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 the from activity,

BridgeClass.instance().cache = Cus_Obje_arraylist;

3.Then in the to activity, you can get it from the bridge class.

ArrayList<CUSTOM_OBJECT> Cus_Obje_arraylist = BridgeClass.instance().cache;
于 2012-11-30T01:27:36.877 に答える
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");

ご不明な点がございましたら、コメントしてください。

于 2012-11-30T01:39:09.840 に答える