无法将类的对象从一个活动传递到另一个活动? [复制]
Posted
技术标签:
【中文标题】无法将类的对象从一个活动传递到另一个活动? [复制]【英文标题】:Unable to pass an object of a class from one activity to another? [duplicate] 【发布时间】:2013-08-11 13:18:53 【问题描述】:在传递类中传递对象的代码
final ArrayList<SongDetails> Songinfo = getSongsFromDirectory(f);
public void onItemClick(AdapterView a, View v, int position, long id)
Intent intent = new Intent(getActivity(), NowPlaying.class);
intent.putExtra("Data1",songinfo);
intent.putExtra("Data2",position);
startActivity(intent);
);
检索类中的代码
Intent i = getIntent();
ArrayList<SongDetails> Songinfo2 = (ArrayList<SongDetails>)i.getSerializableExtra("Data1");
position=i.getIntExtra("Data2", 1);
我已经在这两个类以及 SongDetails 类中实现了 Serializable(我正在传递它的对象)
【问题讨论】:
什么不起作用?有哪些错误?会发生什么? 当我想打开新活动时..我传递对象的活动..应用程序崩溃 您可以按照 iandownie 的回答 ***.com/a/18149853/383414 传递一个数组列表 【参考方案1】:考虑使用包裹.....
使用 parcels 是一种比使用可序列化更好更快的方法
【讨论】:
【参考方案2】:如果你想传递一个对象,你可以使用Parcelable
interface。 Bundles
可以容纳任何包裹,Intent
s 可以容纳任何Bundle
,因为它们跨越了不同Activity
s 和进程之间的边界。
【讨论】:
是的thanx....我现在正在尝试实现它,但你能在我的代码中找到任何错误吗?【参考方案3】:使用捆绑包,例如
Intent myIntent = new Intent(view.getContext(),Mapper.class);
Bundle b = new Bundle();
b.putString("A_STRING", aString);
myIntent.putExtras(b);
startActivityForResult(myIntent, 0);
然后
Intent intent = this.getIntent();
Bundle b = intent.getExtras();
aString = b.getString("A_STRING");
但要适应你的目的。
补充:大概你需要使用类似的东西
b.putParcelableArrayList(String key, ArrayList<? extends Parcelable> value)
和
b.getParcelableArrayList(String key)
【讨论】:
我的对象不是字符串类型 我正在尝试帮助您编写自己的代码,并以“但适应您的目的”结束了答案。请尝试使用上面的“示例”。根据您在问题中使用的最小代码,您没有使用Bundles
,所以我建议您将其添加到您的代码中?
是的,我知道,但我应该把什么放在这里??捆绑 b = 新捆绑(); b.putString("A_STRING", aString);而不是“b.putString”我应该写什么??以上是关于无法将类的对象从一个活动传递到另一个活动? [复制]的主要内容,如果未能解决你的问题,请参考以下文章