无法将类的对象从一个活动传递到另一个活动? [复制]

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】:

如果你想传递一个对象,你可以使用Parcelableinterface。 Bundles 可以容纳任何包裹,Intents 可以容纳任何Bundle,因为它们跨越了不同Activitys 和进程之间的边界。

【讨论】:

是的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”我应该写什么??

以上是关于无法将类的对象从一个活动传递到另一个活动? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何将 ArrayList<Custom Object> 从一个活动传递到另一个活动? [复制]

如何将值从一个活动中的片段传递到另一个活动? [复制]

如何将 Bitmap 对象从一个活动传递到另一个活动

在Android中将一个对象从一个活动传递到另一个活动

如何将不可打包的对象从活动传递到另一个活动?

无法通过intent将数组列表从一个活动传递到另一个活动