Reputation: 16780
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
Reputation: 4297
Parcelable is pain in writing code but more cost effective than Serializable. Have a look at the given below link -
Upvotes: 2
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
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