2011-08-10 17 views
0

putExtras()メソッドをテストしていましたが、適切なキーを使用して配列を設定し、getメソッドを使用して呼び出されたアクティビティから取得すると、しかし、他のタイプのものではないことに気がついた。少なくとも、私がここで言及していることは、私が言及しているコードであることに疑問がある場合に備えて、私にオプションを与えていないことに気付いた。あるアクティビティから別のアクティビティへのANY型の配列の受け渡し

Bundle b =new Bundle(); 
b.putStringArray(key, array); 
Intent i =new Intent(context, secondActivity); 
i.putExtras(b); 
StartActivity(i); 

単に別のクラスから配列を取得するには:

Bundle b=this.getIntent().getExtras(); 
String[] array=b.getStringArray(key); 

お知らせここでは、「キー」の文字列変数を、それが両方で同じである必要がありますので、あなたが要求している配列を特定する唯一のものです側面。

このコードは完全にうまく動作しますが、File型の配列とOption型の配列の1つを渡そうとしています。

私はこれらのケースでどうすればいいのですか?

ありがとうございます。

+0

質問のタグに、プログラミングする言語を追加してください。 –

+0

^私はそれがJavaであることは明らかです。 – Vinay

+0

笑それはjavaです:P – Batzi

答えて

0

Androidの私の理解から、あなたはバンドルを使ってプリミティブ型を渡すことが許されています。カスタムオブジェクトを渡すことはできません。ですから、これについては多くの方法があります。迅速で面倒なソリューションの1つは、静的変数としてファイル配列を取得することです。だから、SomeActivity.fileArrayのようなことができますが、私はこのメソッドを推奨しません。単純な例を示しています...オブジェクトをプリミティブ型(json string)としてシリアル化し、使用するアクティビティで逆シリアル化することができます。

0

Serializableを受け入れる方法のオーバーロードされたバージョンIntent.putExtra()を使用して行うことができます。 FileSerializableを実装しており、Java配列もシリアライズ可能であるため可能です。次に、Intent.getSerializableExtra()メソッドを使用してこの配列を取得できます。

File[]Bundleに設定する場合は、Bundle.putSerializable()Bundle.getSerializable()の方法を使用できます。

+0

私は返信のためにこれを試してみます。 – Batzi

+0

私はそれを試してみましたが、Fileは動作しますが、 "Option"というタイプはありません。 Optionオブジェクトでこれがどのようにできるか知っていますか? – Batzi

+0

申し訳ありませんが私はそれを明確にしていないが、オプションは私が自分自身を作成し​​たオブジェクトです。私はそれを別のアクティビティに渡したいだけです。 – Batzi

関連する問題