1

我目前正在开发一个 android 项目,并且我有一个使用该startActivityForResult()功能开始的活动。

在这个活动中,我有一个 ArrayList,我创建了一个 Internet,然后将结果设置为意图,如下面的代码所示。

private void getSearchData()
    {
        ArrayList<Spanned> passwords = null;
        String searchTerm = txtSearch.getText().toString();
        GetSearchResults search = new GetSearchResults(this, searchTerm);
        if (rdoApp.isChecked())
        {
            passwords = search.getData(SearchType.App);
        }
        else if (rdoName.isChecked())
        {
            passwords = search.getData(SearchType.Name);
        }
        else if (rdoUsername.isChecked())
        {
            passwords = search.getData(SearchType.Username);
        }

        Intent intent = new Intent();
        intent.putExtra("searchResults", passwords);
        setResult(1, intent);
        finish();
    }

然后,在函数的第一个活动中,OnActivityResult我想获取 ArrayList 以便我可以处理数据。到目前为止,我有以下代码。

protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    common.showToastMessage("Result received", Toast.LENGTH_LONG);
    Bundle bundle = data.getExtras();

}

我不知道从这里去哪里。

4

2 回答 2

4

我设法找到了一种方法,这要感谢@Jan Gerlinger 的回答为我指明了正确的方向,但我已经找到了方法。

在我设置结果的活动中,我有以下代码

ArrayList<Spanned> passwords = search.getResult();
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putSerializable("passwords", passwords);
intent.putExtras(bundle);
setResult(1, intent);
finish();

在 OnActivityResult 函数内部的活动中,我有以下内容

protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
common.showToastMessage("Result received", Toast.LENGTH_LONG);
Bundle bundle = data.getExtras();
ArrayList<Spanned> passwords = (ArrayList<Spanned>) bundle.getSerializable("passwords");
}
于 2012-10-03T19:37:33.310 回答
1
intent.putExtra("searchResults", passwords);

这里使用的putExtra(String name, Serializable value)方法。所以你可以用getSerializableExtra(String name)它来取回它:

ArrayList<Spanned> passwords = (ArrayList<Spanned>) data.getSerializableExtra("searchResults");

根据您的Spanned对象的类型以及它们是否实现Serializable,这可能会抛出异常,因为Spanned它没有Serializable直接实现。

于 2012-10-03T09:05:38.860 回答