如何将对象传递给活动?
我有两个活动,NewTransferMyOwn.java和FromAccount.java如何将对象传递给活动?
当我从NewTransferMyOwn.java去FromAccount.java,我写的代码如下
Intent i = new Intent(NewTransferMyOwn.this, FromAccount.class);
startActivityForResult(i, FROM_ACCOUNT);
当我从FromAccount回来的.java到NewTransferMyOwn.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,有什么问题在这里,我怎么能传递声明反对活动的对象?
您还可以通过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();
}
}
我不能这样做,因为: “方法putExtra(String,Parcelable)对于前一个Activity中的类型Intent” – 2013-11-27 13:54:14
不明确,结果将从Bundle中提取,因此它将是newBundle()。 .getExtras()。getSerializeable(“key”)'? – dakait 2013-12-13 07:48:38
您不能在活动之间传递任意对象。您可以作为extras/bundle中传递的唯一数据是基本类型或Parcelable
对象。
和Parcelables基本上是可以序列化/反序列化到/从一个字符串的对象。
您也可以考虑仅传递引用该内容的URI并在其他活动中重新获取它。
包裹不会被序列化为字符串。它们是可以通过Binder IPC传递的特殊对象。基本上你要在进程之间传递的对象应该实现Parcelable接口,并且应该由基本类型组成。 – Yury 2011-12-31 07:48:59
[你应该做一些搜索(http://www.google.com.pk/search?q=android+passing+my+object+to+another+activity) – 2011-12-31 07:47:30
我认为有是你和谷歌之间的东西:-P @AdilSoomro,谢谢我的确,但是现在他亲爱的时间了kar – 2011-12-31 07:56:40