我有两个活动,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,这里有什么问题,我怎样才能将Statement对象传递回acitivity?
答案 0 :(得分:7)
您还可以按Serializable
实现自定义类并传递自定义对象
public class MyCustomClass implements Serializable
{
// getter and setters
}
然后使用Intent传递自定义对象。
intent.putExtra("myobj",customObj);
检索您的对象
Custom custom = (Custom) data.getSerializableExtra("myobj");
<强>更新强>
在使用startActivityForResult
Intent data = new Intent();
Custom value = new Custom();
value.setName("StackOverflow");
data.putExtra("myobj", value);
setResult(Activity.RESULT_OK, data);
finish();
在先前活动中检索自定义对象
if(requestCode == MyRequestCode){
if(resultCode == Activity.RESULT_OK){
Custom custom = (Custom) data.getSerializableExtra("myobj");
Log.d("My data", custom.getName()) ;
finish();
}
}
答案 1 :(得分:2)
您无法在活动之间传递任意对象。您可以作为附加/在包中传递的唯一数据是基本类型或Parcelable
对象。
Parcelables基本上是可以对字符串进行序列化/反序列化的对象。
您还可以考虑仅传递引用内容的URI并在其他活动中重新获取它。