【问题标题】:Returning an array from an activity从活动中返回一个数组
【发布时间】:2012-09-30 21:35:54
【问题描述】:

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

数组是一个ArrayList<Spanned>,可以说它叫做myArray。

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

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

感谢您提供的任何帮助。

【问题讨论】:

    标签: android arraylist tostring object-to-string


    【解决方案1】:

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

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

    序列化

    如果问题与序列化有关,您可以使用Html.toHtml and 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));
    }
    

    【讨论】:

    • 感谢您的帮助,然后我将如何让这个 ArrayList 再次退出,以便我可以处理其中的数据。
    • 我不确定我是否遗漏了一些东西,但仍然不确定您对 Html.toHtml 等的含义。我有一个 ArrayList ,在您的示例中,我将其设置为myData 并将其存储在意图设置结果中。然后,在 OnActivityResult 函数中,我需要将数据恢复为 ArrayList
    • 我在答案中加了一个例子
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多