Android - startActivityForResult 传递对象的 ArrayList

arraysAndroid

1个回答

写回答

13102239486

2025-07-06 20:05

+ 关注

Android
Android

Android中使用startActivityForResult传递对象的ArrayList

Android开发中,有时候我们需要在不同的Activity之间传递复杂的数据结构,例如包含多个对象的ArrayList。而为了实现这一目标,我们可以使用startActivityForResult方法,这个方法允许我们在启动一个Activity时,期望在其完成后收到结果。通过巧妙地使用Intent和Bundle,我们可以轻松地传递ArrayList对象,实现数据的有序传递。

准备工作

在开始之前,我们首先需要创建两个Activity,分别是发送数据的Activity(SenderActivity)和接收数据的Activity(ReceiverActivity)。同时,我们需要定义一个数据模型类,以便在ArrayList中传递对象。

Java

// 数据模型类

public class MyObject implements Serializable {

private String name;

private int age;

// 构造方法、getter和setter省略

}

在SenderActivity中传递ArrayList

在SenderActivity中,我们首先创建一个包含MyObject对象的ArrayList,并将其添加到Intent中。接着,我们调用startActivityForResult启动ReceiverActivity,并传递带有ArrayList的Intent。

Java

public class SenderActivity extends AppCompatActivity {

private static final int REQUEST_CODE = 1;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setcontentView(R.layout.activity_sender);

// 创建包含MyObject对象的ArrayList

ArrayList<MyObject> myObjects = new ArrayList<>();

myObjects.add(new MyObject("John", 25));

myObjects.add(new MyObject("Jane", 30));

// 将ArrayList添加到Intent中

Intent intent = new Intent(SenderActivity.this, ReceiverActivity.class);

intent.putExtra("myObjectList", myObjects);

// 启动ReceiverActivity,并期望结果

startActivityForResult(intent, REQUEST_CODE);

}

// 省略其他方法

}

在ReceiverActivity中接收ArrayList

在ReceiverActivity中,我们通过getSerializableExtra方法获取传递过来的ArrayList对象。然后,我们可以对这个ArrayList进行操作,例如遍历其中的对象,显示它们的内容。

Java

public class ReceiverActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setcontentView(R.layout.activity_receiver);

// 获取传递过来的ArrayList对象

ArrayList<MyObject> receivedList = (ArrayList<MyObject>) getIntent().getSerializableExtra("myObjectList");

// 遍历ArrayList中的对象

if (receivedList != null) {

for (MyObject myObject : receivedList) {

Log.d("ReceiverActivity", "Name: " + myObject.getName() + ", Age: " + myObject.getAge());

}

}

}

// 省略其他方法

}

通过这样的方式,我们成功地在SenderActivity和ReceiverActivity之间传递了包含对象的ArrayList。这种方法不仅简单易懂,而且可扩展性强,适用于需要传递复杂数据结构的各种场景。在实际开发中,记得适当处理可能的空指针异常,以确保程序的稳定性。希望这篇文章能够帮助你更好地使用startActivityForResult传递ArrayList对象。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号