我目前正在做一个android项目,我有一个使用startActivityForResult()函数启动的活动。
在此活动中,我有一个ArrayList,我创建了一个互联网,然后将结果设置为意图,如以下代码所示。
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();
}我不知道下一步该怎么走。
发布于 2012-10-04 03:37:33
我设法找到了一种方法,这要归功于@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-03 17:05:39
intent.putExtra("searchResults", passwords);这里使用putExtra(String name, Serializable value)方法。所以你可以使用getSerializableExtra(String name)来找回它:
ArrayList<Spanned> passwords = (ArrayList<Spanned>) data.getSerializableExtra("searchResults");根据您的Spanned对象的类型,如果它们实现了Serializable,则可能会抛出异常,因为Spanned不直接实现Serializable。
https://stackoverflow.com/questions/12698555
复制相似问题