使用Parcelable将对象从一个android活动传递到另一个

时间:2012-06-11 06:19:36

标签: android object android-activity bundle parcelable

我想这样做

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?

3 个答案:

答案 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更具成本效益。看看下面给出的链接 -

Parcelable Vs Serializable