繁体   English   中英

通过 Intent 发送自定义 ArrayList

[英]Sending a custom ArrayList through an Intent

我在使用自定义 ArrayList 并尝试在活动之间移动它们时遇到问题。 首先,我在第一个活动中声明了一个自定义 ArrayList:

private ArrayList<String[]> dataArray = new ArrayList<String[]>();

其中 ArrayList 的每个元素都是一个 String 元素数组。

接下来,我使用 putExtra() 将其放入意图中:

Intent int1 = new Intent(this, ManualModeActivity.class);
int1.putExtra(EXTRA_MESSAGE, dataArray);

然后,当我尝试在我的第二个活动中恢复 ArrayList 时,我发现ArrayList<String>元素只有一个 getStringArrayListExtra() 方法,因此它不适用于ArrayList<String[]> 我一直在搜索这个,我找到的都是自定义对象的例子,其中解决方案是在它们上实现 Parcelable 或 Serialize 接口。 我怎么能用像 String[] 这样的“默认”对象来做到这一点? (或者,由于我仍然是 Java 新手,我是否遗漏了一些关于接口如何工作的信息?)

如果 E 类型是Serializable ,您可以以相同的方式传递ArrayList<E>

您将调用putExtra (String name, Serializable value)进行存储,并getSerializableExtra (String name)进行检索。

例子:

ArrayList<String> myList = new ArrayList<String>();
intent.putExtra("mylist", myList);
In the other Activity:

ArrayList<String> myList = (ArrayList<String>) getIntent().getSerializableExtra("mylist");

您从第一个活动发送数据的代码是正确的。

要在第二个活动中接收数据,请使用intentgetSerializableExtra()方法,例如:

ArrayList<String[]> data = (ArrayList<String[]>) getIntent().getSerializableExtra(EXTRA_MESSAGE);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM