我在使用自定义ArrayLists并尝试在活动之间移动时遇到问题。首先,我在第一个活动中声明了一个自定义ArrayList:
private ArrayList<String[]> dataArray = new ArrayList<String[]>();
其中ArrayList的每个元素都是一个String元素数组。
接下来,我将它放入putExtra()的意图中:
Intent int1 = new Intent(this, ManualModeActivity.class);
int1.putExtra(EXTRA_MESSAGE, dataArray);
然后,当我尝试在第二个Activity中恢复ArrayList时,我发现ArrayList<String>
元素只有一个getStringArrayListExtra()方法,所以它不能用{{ 1}}。我一直在搜索这个,我发现的只是自定义对象的示例,解决方案是在它们上实现Parcelable或Serialize接口。我怎么能用&#34;默认&#34;对象像String []? (或者我可能错过了一些关于接口如何工作的东西,因为我还是java中的新手?)
答案 0 :(得分:0)
如果E类型为ArrayList<E>
,您可以采用相同的方式传递Serializable
。
您可以调用Intent的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");
答案 1 :(得分:0)
您从第一项活动发送数据的代码是正确的。
要在第二个活动中接收数据,请使用intent
的{{1}}方法,例如:
getSerializableExtra()