8

我想做这个

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?

4

3 回答 3

7

创建您的类并实现Serializable

private class myClass implements Serializable  {
   }

并且喜欢:

myClass obj = new myClass();
Intent aActivity = (A.this, B.class);
intent.putExtra("object", obj);

在接收方:

myClass myClassObject = getIntent().getSerializableExtra("object");  
于 2012-06-11T06:22:08.117 回答
6

正如错误所暗示的,您需要让您的类(myClass在这种情况下)实现Parcelable。如果您查看 的文档Bundle,所有putParcelable方法Parcelable都以某种形式采用它们的一个或一个集合。(根据名称,这是有道理的。)因此,如果您想使用该方法,则需要有一个Parcelable实例来放入包中...

当然,您不必使用-putParcelable您可以Serializable改为实现并调用putSerializable.

于 2012-06-11T06:22:11.563 回答
2

Parcelable 是编写代码的痛苦,但比 Serializable 更具成本效益。看看下面给出的链接 -

可打包与可序列化

于 2013-08-17T16:16:48.727 回答