2011-10-21 24 views
1

私はどのアクティビティでもアクセスできる静的フィールドを持つクラスを作成するグローバルな静的手法について読んでいます。 ArrayList<Drawables>やHashMapsのような大きなデータセットを渡す方法はありますか? 私はSerializableについても読んだことがありますが、それをどのように使用するか分かりません。すべてのサンプルコードは大歓迎です...あるアクティビティから別のアクティビティにオブジェクトを渡す最も良い方法

+0

私の答え[ここ](http://stackoverflow.com/questions/7400564/android-parcelable-retailerorderactivity-java-return-null)を確認してください。 [Parcelable](http://developer.android.com/reference/android/os/Parcelable.html)を使った完全な例。 Parcelableの詳細については、Androidのドキュメントを使用することができます。 –

答えて

3
Intent intent = new Intent(getBaseContext(), NextActivity.class); 
intent.putExtra("arraylist", new ArrayList<String>()); 

あなたのArrayListのインスタンスFriend.classのため、あなたが自分で作成した別のオブジェクトが含まれている場合は、あなたが実装することができますシリアライズ可能なFriend.class、次に:

Intent intent = new Intent(getBaseContext(), NextActivity.class); 
intent.putExtra("friendlist", new ArrayList<Friend>()); 

そしてNextActivity.classでそれを受信するために:

Bundle extras = getIntent().getExtras(); 
    if(extras != null){ 
     ArrayList<Friend> friends = extras.getSerializable("friendlist"); 
    } 

まあ、代わりに空のArrayListを渡すので、あなたはArrayListの値を挿入し、それに合格する必要がありますが、あなたのアイデアを得ます。

1

Activityと呼ぶために作成したIntentオブジェクトに情報をパックする必要があります。エクストラBundleオブジェクトがあります。

SerializableインターフェイスまたはAndroid固有のParcelableインターフェイスのいずれかを使用して、プリミティブでないオブジェクトを渡すことができます。

Androidデベロッパーサイトでは、自分のチュートリアルからhandy Notepad Tutorial with an example of putting information into the intent.

があります

super.onListItemClick(l, v, position, id); 
Cursor c = mNotesCursor; 
c.moveToPosition(position); 
Intent i = new Intent(this, NoteEdit.class); 
i.putExtra(NotesDbAdapter.KEY_ROWID, id); 
i.putExtra(NotesDbAdapter.KEY_TITLE, c.getString(
     c.getColumnIndexOrThrow(NotesDbAdapter.KEY_TITLE))); 
i.putExtra(NotesDbAdapter.KEY_BODY, c.getString(
     c.getColumnIndexOrThrow(NotesDbAdapter.KEY_BODY))); 
startActivityForResult(i, ACTIVITY_EDIT); 
+0

サンプルコード? –

1

インテント、パーセルブル、シリアライゼーションなどを気にする必要がない同じアプリケーション(同じJVMを話す)にいれば、すべてのオブジェクトが同じヒープにあり、シングルトン、roboguiceのようなDIコンテナまたはあなたが合って見えるものは何でも。

データを他のアプリケーションにプッシュする場合は、JSON/XMLのシリアル化されたものとして渡すことをお勧めします。 HashMapを渡す

0

は、すべてのコレクションにはシリアライズ(SP?)彼らはHashMapを挿入するために意図

使用putExtra(文字列のキー、SerializableをOBJ)内のエクストラとして渡すことができるインタフェース手段と上を実装するオブジェクト、非常に単純ですgetIntent()。getSerializableExtra(String key)を使うと、戻り値をHashMapとしてキャストする必要があります。

関連する問題