如何将对象传递给活动?

Cha*_*har 4 android

我有两个活动,NewTransferMyOwn.java和FromAccount.java

当我从NewTransferMyOwn.java转到FromAccount.java时,我会编写如下代码

Intent i = new Intent(NewTransferMyOwn.this, FromAccount.class);
startActivityForResult(i, FROM_ACCOUNT);
Run Code Online (Sandbox Code Playgroud)

当我从FromAccount.java回到NewT​​ransferMyOwn.java时,我想传递一个完整的类Statement对象

我写代码为

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

我在putExtra上得到如下错误,

改为'getIntExtra'

就像我一样,再次将st转换为int,这里有什么问题,如何将Statement对象传递回acitivity?

Lal*_*ani 7

您还可以通过自定义类来实现自定义类Serializable,

public class MyCustomClass implements Serializable
{
  // getter and setters
}
Run Code Online (Sandbox Code Playgroud)

然后使用Intent传递自定义对象.

intent.putExtra("myobj",customObj);
Run Code Online (Sandbox Code Playgroud)

检索您的对象

Custom custom = (Custom) data.getSerializableExtra("myobj");
Run Code Online (Sandbox Code Playgroud)

更新:

在使用时将自定义对象传递给上一个Activity startActivityForResult

Intent data = new Intent();
Custom value = new Custom();
value.setName("StackOverflow");
data.putExtra("myobj", value);
setResult(Activity.RESULT_OK, data);
finish();
Run Code Online (Sandbox Code Playgroud)

检索"上一个活动"上的自定义对象

if(requestCode == MyRequestCode){
     if(resultCode == Activity.RESULT_OK){
         Custom custom = (Custom) data.getSerializableExtra("myobj");
         Log.d("My data", custom.getName()) ;
         finish();
     }
 }
Run Code Online (Sandbox Code Playgroud)