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

24,002

Solution 1

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.

Solution 2

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

Solution 3

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

Parcelable Vs Serializable

Share:
24,002
Namratha
Author by

Namratha

Updated on February 18, 2020

Comments

  • Namratha
    Namratha about 4 years

    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?