1

我目前正在开发一个 android 项目,我希望能够 startActivityForResult 以便我可以返回一个数组。

该数组是一个ArrayList<Spanned>可以说它称为 myArray 的数组。

从我读过的内容来看,我无法使用设置的结果直接从活动中返回一个数组,所以我想一旦数组将所有数据添加到数组中,我就可以在其上调用 toString 函数,即myArray.toString().

如果我这样做,我不知道如何将其转换回原始ArrayList<Spanned>.

感谢您的任何帮助,您可以提供。

4

1 回答 1

2

使用setResult(int, Intent)。从子活动:

Intent intent = new Intent();
intent.putExtra("mydata", mydata);

setResult(RESULT_OK, intent);

序列化

如果问题与序列化有关,您可以使用Html.toHtml 和 Html.fromHtml。使用 toHtml 可以将 Spanned 转换为字符串,而使用 fromHtml 可以得到 spanned。在子活动中序列化 Spanned 并额外添加:

Intent intent = new Intent();
ArrayList<Spanned> myData;
ArrayList<String> strings = new ArrayList<String>();
for(Spanned item : myData)
    strings.add(Html.toHtml(item));
intent.putStringArrayListExtra("mydata", strings);

setResult(RESULT_OK, intent);

要取回调用者活动中的数据,请使用 onActivityResult 中传递的意图:

protected void onActivityResult (int requestCode, int resultCode, Intent data) {
    ArrayList<Strings> strings = data.getStringArrayListExtra("mydata");
    ArrayList<Spanned> spanned = new ArrayList<Spanned>();
    for(String s : strings)
       spanned.add(Html.fromHtml(s));
}
于 2012-09-30T21:43:25.207 回答