Namratha
Namratha

Reputation: 16780

Use Parcelable to pass an object from one android activity to another

I want to do this

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);  
    }

How do I use Parcelable to pass obj to activity B?

Upvotes: 8

Views: 26620

Answers (3)

Jimit Patel
Jimit Patel

Reputation: 4297

Parcelable is pain in writing code but more cost effective than Serializable. Have a look at the given below link -

Parcelable Vs Serializable

Upvotes: 2

Jon Skeet
Jon Skeet

Reputation: 1499880

As the error suggests, you need to make your class (myClass in this case) implement Parcelable. If you look at the documentation for Bundle, all the putParcelable methods take either a Parcelable or a collection of them in some form. (This makes sense, given the name.) So if you want to use that method, you need to have a Parcelable instance to put in the bundle...

Of course you don't have to use putParcelable - you could implement Serializable instead and call putSerializable.

Upvotes: 6

Paresh Mayani
Paresh Mayani

Reputation: 128428

Create your class and implements Serializable:

private class myClass implements Serializable  {
   }

And do like:

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

On Receiving side:

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

Upvotes: 7

Related Questions