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

Exception or error:

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?

How to solve:

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.

###

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

###

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

Parcelable Vs Serializable

Leave a Reply

Your email address will not be published. Required fields are marked *