[英]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");
您从第一个活动发送数据的代码是正确的。
要在第二个活动中接收数据,请使用intent
的getSerializableExtra()
方法,例如:
ArrayList<String[]> data = (ArrayList<String[]>) getIntent().getSerializableExtra(EXTRA_MESSAGE);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.