我想这样做
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);
}
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);
}
如何使用Parcelable将obj传递给活动B?
答案 0 :(得分:7)
创建您的课程并实施可序列化:
private class myClass implements Serializable {
}
并且喜欢:
myClass obj = new myClass();
Intent aActivity = (A.this, B.class);
intent.putExtra("object", obj);
接收方:
myClass myClassObject = getIntent().getSerializableExtra("object");
答案 1 :(得分:5)
正如错误所示,您需要让您的班级(在这种情况下为myClass
)实施Parcelable
。如果您查看documentation for Bundle
,则所有putParcelable
方法都会采用某种形式的Parcelable
或其集合。 (考虑到名称,这是有道理的。)因此,如果您想使用该方法,则需要将Parcelable
实例放入包中...
当然,您 无法使用putParcelable
- 您可以改为Serializable
并致电putSerializable
。
答案 2 :(得分:2)
Parcelable编写代码很痛苦,但比Serializable更具成本效益。看看下面给出的链接 -