【问题标题】: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 的回答 stackoverflow.com/a/18149853/383414 传递一个数组列表

标签: android android-activity serializable


【解决方案1】:

考虑使用包裹.....

使用 parcels 是一种比使用可序列化更好更快的方法

【讨论】:

    【解决方案2】:

    如果你想传递一个对象,你可以使用ParcelableinterfaceBundles 可以容纳任何包裹,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”我应该写什么??
    猜你喜欢
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-23
    • 2011-01-28
    • 2018-10-10
    • 1970-01-01
    相关资源
    最近更新 更多