2012-06-11 5 views
6

に1つのアンドロイドの活動からオブジェクトを渡すために、私は、活動BにOBJを渡すためにParcelableを使用するにはどうすればよいこの 使用Parcelableは別の

class A extends Activity{ 
    private class myClass{ 
    } 
    myClass obj = new myClass(); 

    intent i = new Intent(); 
    Bundle b = new Bundle(); 
    b.putParcelable(Constants.Settings, obj); //I get the error The method putParcelable(String, Parcelable) in the type Bundle is not applicable for the arguments (int, A.myClass) 
    i.setClass(getApplicationContext(),B.class); 
    startActivity(i); 
} 

をしたいですか?

答えて

5

エラーが示すように、必要にあなたのクラス(この場合はmyClass)を実装するParcelabledocumentation for Bundleを見ると、putParcelableのすべてのメソッドは、Parcelableまたはそれらのコレクションを何らかの形で取ります。あなたはputParcelableを使用するを持っていない(これは。名前を指定して、理にかなっています)ですから、そのメソッドを使用する場合は、バンドルに入れてParcelableインスタンスを持っている必要があります...もちろん

- 代わりにSerializableを実装し、putSerializableを呼び出してください。

+0

私はSerializableインターフェイスを理解している方法は、シリアル化と逆シリアル化をサポートするために使用されています。それはどのようにここに当てはまりますか? また、パーセルブルを実装しても、オブジェクトをパーセルに変換するにはどうすればよいですか?私に例を教えていただけますか? – Namratha

+0

@Namratha:情報の受け渡しをしようとしています。これは、シリアライズされたものとまったく同じです。同じプロセス内で作業している場合は、バンドルは必要ありませんが、プロセス間で情報を渡す必要がある場合は、シリアル化を1つの形式にするなど、 。 –

+0

私は参照してください。しかし、私はここでhttp://shri.blog.kraya.co.uk/2010/04/26/android-parcel-data-to-pass-between-activities-using-parcelable-classes/を読んでいます。 Parcelableはそうではありません。また、私はまだオブジェクトをParcelableインスタンスに変換しようとするのに問題があります。 – Namratha

7

あなたのクラスを作成し、Serializableをを実装します。

private class myClass implements Serializable { 
    } 

などの操作を行います。受信側では

myClass obj = new myClass(); 
Intent aActivity = (A.this, B.class); 
intent.putExtra("object", obj); 

myClass myClassObject = getIntent().getSerializableExtra("object"); 
+0

- リンク下記を見てください?ありがとう! – Namratha

2

Parcelableはコードを書くことには痛みがありますが、Serializableよりもコスト効率が良いです。 ;私はあなたが意図aActivity =新しいテント(A.this、B.class)を意味だと思う

Parcelable Vs Serializable

関連する問題