如何将对象传递给活动?

问题描述:

我有两个活动,NewTransferMyOwn.java和FromAccount.java如何将对象传递给活动?

当我从NewTransferMyOwn.java去FromAccount.java,我写的代码如下

Intent i = new Intent(NewTransferMyOwn.this, FromAccount.class); 
startActivityForResult(i, FROM_ACCOUNT); 

当我从FromAccount回来的.java到NewT​​ransferMyOwn.java,然后我想通过类声明完整的对象

我写代码

Statement st = ItemArray.get(arg2);//ItemArray is ArrayList<Statement>, arg2 is int 
Intent intent = new Intent(FromAccount.this,NewTransferMyOwn.class).putExtra("myCustomerObj",st); 

我得到错误如下的putExtra,

更改为“getIntExtra”

像我一样,有再铸ST为int,有什么问题在这里,我怎么能传递声明反对活动的对象?

+1

[你应该做一些搜索(http://www.google.com.pk/search?q=android+passing+my+object+to+another+activity) – 2011-12-31 07:47:30

+0

我认为有是你和谷歌之间的东西:-P @AdilSoomro,谢谢我的确,但是现在他亲爱的时间了kar – 2011-12-31 07:56:40

您还可以通过Serializable实现自定义类,并通过自定义对象,

public class MyCustomClass implements Serializable 
{ 
    // getter and setters 
} 

再经过与意向的自定义对象。

​​

要检索对象

Custom custom = (Custom) data.getSerializableExtra("myobj"); 

UPDATE:

通过您的自定义对象到以前的活动,而你正在使用startActivityForResult

Intent data = new Intent(); 
Custom value = new Custom(); 
value.setName("*"); 
data.putExtra("myobj", value); 
setResult(Activity.RESULT_OK, data); 
finish(); 

要检索Previ上的自定义对象OU的活动

if(requestCode == MyRequestCode){ 
    if(resultCode == Activity.RESULT_OK){ 
     Custom custom = (Custom) data.getSerializableExtra("myobj"); 
     Log.d("My data", custom.getName()) ; 
     finish(); 
    } 
} 
+0

我不能这样做,因为: “方法putExtra(String,Parcelable)对于前一个Activity中的类型Intent” – 2013-11-27 13:54:14

+0

不明确,结果将从Bundle中提取,因此它将是newBundle()。 .getExtras()。getSerializeable(“key”)'? – dakait 2013-12-13 07:48:38

您不能在活动之间传递任意对象。您可以作为extras/bundle中传递的唯一数据是基本类型或Parcelable对象。

和Parcelables基本上是可以序列化/反序列化到/从一个字符串的对象。

您也可以考虑仅传递引用该内容的URI并在其他活动中重新获取它。

+1

包裹不会被序列化为字符串。它们是可以通过Binder IPC传递的特殊对象。基本上你要在进程之间传递的对象应该实现Parcelable接口,并且应该由基本类型组成。 – Yury 2011-12-31 07:48:59